mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
44 lines
1.4 KiB
Plaintext
44 lines
1.4 KiB
Plaintext
// RUN: %swift -gnone -O -disable-legacy-type-info -target arm64-apple-ios7 -emit-assembly %s -o - | %FileCheck %s
|
|
|
|
// REQUIRES: CODEGENERATOR=AArch64
|
|
// REQUIRES: rdar49791522
|
|
|
|
// rdar://17999904
|
|
|
|
// No i386 test right now because we don't actually have a formal pattern there.
|
|
|
|
import Builtin
|
|
|
|
class C {}
|
|
|
|
sil_vtable C {}
|
|
|
|
sil [ossa] @_TFC21autorelease_optimized1Cd : $@convention(method) (@owned C) -> @owned Builtin.NativeObject {
|
|
bb0(%0 : @owned $C):
|
|
%1 = unchecked_ref_cast %0 : $C to $Builtin.NativeObject // user: %2
|
|
return %1 : $Builtin.NativeObject // id: %2
|
|
}
|
|
|
|
sil public_external @foo : $@convention(thin) (@owned C) -> @autoreleased C
|
|
sil public_external @bar : $@convention(thin) (@owned C) -> ()
|
|
|
|
sil [ossa] @baz : $@convention(thin) (@owned C) -> () {
|
|
bb0(%0 : @owned $C):
|
|
%1 = function_ref @foo : $@convention(thin) (@owned C) -> @autoreleased C
|
|
%2 = apply %1(%0) : $@convention(thin) (@owned C) -> @autoreleased C
|
|
|
|
// This call is just so that we won't tail-call
|
|
// objc_retainAutoreleasedReturnValue, which complicates the test.
|
|
%3 = function_ref @bar : $@convention(thin) (@owned C) -> ()
|
|
apply %3(%2) : $@convention(thin) (@owned C) -> ()
|
|
%5 = tuple ()
|
|
return %5 : $()
|
|
}
|
|
|
|
// CHECK: bl _foo
|
|
// CHECK-NEXT: ; InlineAsm Start
|
|
// CHECK-NEXT: mov {{x29|fp}}, {{x29|fp}}
|
|
// CHECK-NEXT: ; InlineAsm End
|
|
// CHECK-NEXT: bl _objc_retainAutoreleasedReturnValue
|
|
|