| // RUN: %swift -target i386-apple-ios7 %s -gnone -emit-ir | %FileCheck %s |
| // RUN: %swift -target armv7-apple-ios7 %s -gnone -emit-ir | %FileCheck %s |
| |
| // REQUIRES: CODEGENERATOR=X86 |
| // REQUIRES: CODEGENERATOR=ARM |
| |
| // Check that we correctly lay out single-payload enums with a class reference |
| // payload as nullable pointers. <rdar://problem/16093103> |
| |
| sil_stage canonical |
| |
| import Builtin |
| |
| class C {} |
| sil_vtable C {} |
| |
| sil @$S11enum_32_bit1CCfD : $@convention(thin) (@owned C) -> () |
| |
| // CHECK-LABEL: %T11enum_32_bit3FooO = type <{ [4 x i8] }> |
| enum Foo { |
| case A(C) |
| case B |
| } |
| |
| @objc protocol ClassExistential {} |
| |
| // CHECK-LABEL: %T11enum_32_bit3BarO = type <{ [4 x i8] }> |
| enum Bar { |
| case A(ClassExistential) |
| case B |
| } |
| |
| // CHECK-LABEL: %T11enum_32_bit3BasO = type <{ [4 x i8] }> |
| enum Bas { |
| case A(ClassExistential) |
| case B(C) |
| case Z |
| } |
| |
| // CHECK-LABEL: define{{( protected)?}} swiftcc void @foo(i32) |
| sil @foo : $@convention(thin) (@owned Foo) -> () { |
| entry(%0 : $Foo): |
| return undef : $() |
| } |
| |
| // CHECK-LABEL: define{{( protected)?}} swiftcc void @bar(i32) |
| sil @bar : $@convention(thin) (@owned Bar) -> () { |
| entry(%0 : $Bar): |
| return undef : $() |
| } |
| |
| // CHECK-LABEL: define{{( protected)?}} swiftcc void @bas(i32) |
| sil @bas : $@convention(thin) (@owned Bas) -> () { |
| entry(%0 : $Bas): |
| return undef : $() |
| } |
| |
| // Force instantiation of the IR types |
| sil @indirect_foo : $@convention(thin) (@in Foo) -> () |
| sil @indirect_bar : $@convention(thin) (@in Bar) -> () |
| sil @indirect_bas : $@convention(thin) (@in Bas) -> () |