blob: 0601f30466049528969afb26f0e1079089ece725 [file] [log] [blame]
// RUN: %target-swift-frontend -parse-as-library -O -emit-sil %s | %FileCheck %s
// REQUIRES: swift_stdlib_no_asserts,optimized_stdlib,CPU=x86_64
// Test inline cache with a global class. Make sure the retain|release pair
// for the fast path is removed in the loop.
open class A
{
open func f(_ a: Int) -> Int
{
return a + 1
}
}
var x = 0
public var a = A()
public func testit() {
// CHECK-LABEL: sil @{{.*}}testityyF
// CHECK: bb0:
// CHECK-NOT: {{.*(retain|release).*}}
// CHECK: checked_cast_br
// CHECK: bb1{{.*}}:
// CHECK-NOT: {{.*(retain|release).*}}
// CHECK: return
// CHECK: bb2{{.*}}:
// CHECK-NOT: {{.*(retain|release|apply).*}}
// CHECK: br bb1
// CHECK: bb3{{.*}}:
// CHECK-NEXT: class_method
// CHECK-NEXT: strong_retain
// CHECK-NEXT: apply
// CHECK-NEXT: strong_release
// CHECK-NEXT: br bb1
x = a.f(x)
}