| // 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) |
| } |
| |