Files
swift-mirror/test/IRGen/autorelease_optimized_armv7.sil
Jordan Rose b851b61d17 [test] Disable failing ARM autorelease optimizations tests
...until someone can look at them. Tracked as rdar://problem/49791522.
2019-04-12 10:34:04 -07:00

44 lines
1.4 KiB
Plaintext

// RUN: %swift -gnone -O -target armv7-apple-ios7 -disable-legacy-type-info -emit-assembly %s -o - | %FileCheck %s
// REQUIRES: CODEGENERATOR=ARM
// 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 {{r7|fp}}, {{r7|fp}}
// sometimes: .code 32
// CHECK: @ InlineAsm End
// CHECK-NEXT: bl _objc_retainAutoreleasedReturnValue