Skip to content

Commit ec5b51e

Browse files
authored
Merge pull request #16858 from davezarzycki/better_irgen_test_coverage
2 parents 29ae088 + 52076bf commit ec5b51e

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

test/IRGen/enum.sil

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// #if directives don't work with SIL keywords, therefore please put ObjC tests
22
// in `enum_objc.sil`.
3-
4-
// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil %s -gnone -emit-ir -disable-objc-interop | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize
3+
// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil %s -gnone -emit-ir -enable-objc-interop | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize --check-prefix=CHECK-objc --check-prefix=CHECK-objc-%target-ptrsize
4+
// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil %s -gnone -emit-ir -disable-objc-interop | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize --check-prefix=CHECK-native --check-prefix=CHECK-native-%target-ptrsize
55

66
// REQUIRES: CPU=i386 || CPU=x86_64
77

@@ -1122,8 +1122,10 @@ enum SinglePayloadClass {
11221122
// CHECK-64: entry:
11231123
// CHECK-64: switch i64 %0, label {{%.*}} [
11241124
// CHECK-64: i64 0, label {{%.*}}
1125-
// CHECK-64: i64 1, label {{%.*}}
1126-
// CHECK-64: i64 2, label {{%.*}}
1125+
// CHECK-objc-64: i64 2, label {{%.*}}
1126+
// CHECK-objc-64: i64 4, label {{%.*}}
1127+
// CHECK-native-64: i64 1, label {{%.*}}
1128+
// CHECK-native-64: i64 2, label {{%.*}}
11271129
// CHECK-64: ]
11281130
// CHECK-64: ; <label>
11291131
// CHECK-64: inttoptr [[WORD]] %0 to %T4enum1CC*
@@ -1165,11 +1167,14 @@ enum SinglePayloadClassProtocol {
11651167
// CHECK-64: define{{( dllexport)?}}{{( protected)?}} swiftcc void @single_payload_class_protocol_switch(i64, i64) {{.*}} {
11661168
// CHECK-64: switch i64 %0, label {{%.*}} [
11671169
// CHECK-64: i64 0, label {{%.*}}
1168-
// CHECK-64: i64 1, label {{%.*}}
1169-
// CHECK-64: i64 2, label {{%.*}}
1170+
// CHECK-objc-64: i64 2, label {{%.*}}
1171+
// CHECK-objc-64: i64 4, label {{%.*}}
1172+
// CHECK-native-64: i64 1, label {{%.*}}
1173+
// CHECK-native-64: i64 2, label {{%.*}}
11701174
// CHECK-64: ]
11711175

1172-
// CHECK-64: inttoptr i64 %0 to %swift.refcounted*
1176+
// CHECK-objc-64: inttoptr i64 %0 to %objc_object*
1177+
// CHECK-native-64: inttoptr i64 %0 to %swift.refcounted*
11731178
// CHECK-64: inttoptr i64 %1 to i8**
11741179

11751180
// CHECK-32: define{{( dllexport)?}}{{( protected)?}} swiftcc void @single_payload_class_protocol_switch(i32, i32) {{.*}} {
@@ -1179,7 +1184,8 @@ enum SinglePayloadClassProtocol {
11791184
// CHECK-32: i32 2, label {{%.*}}
11801185
// CHECK-32: ]
11811186

1182-
// CHECK-32: inttoptr i32 %0 to %swift.refcounted*
1187+
// CHECK-objc-32: inttoptr i32 %0 to %objc_object*
1188+
// CHECK-native-32: inttoptr i32 %0 to %swift.refcounted*
11831189
// CHECK-32: inttoptr i32 %1 to i8**
11841190

11851191
sil @single_payload_class_protocol_switch : $(SinglePayloadClassProtocol) -> () {
@@ -2439,7 +2445,8 @@ entry(%0 : $DynamicSingleton<NoPayloads>):
24392445
// Check that payloads get properly masked in nested single-payload enums.
24402446
// rdar://problem/18841262
24412447
// CHECK-64-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc i1 @optional_optional_class_protocol(i64, i64)
2442-
// CHECK-64: icmp eq i64 %0, 1
2448+
// CHECK-objc-64: icmp eq i64 %0, 2
2449+
// CHECK-native-64: icmp eq i64 %0, 1
24432450
// CHECK-32-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc i1 @optional_optional_class_protocol(i32, i32)
24442451
// CHECK-32: icmp eq i32 %0, 1
24452452
enum Optionable<T> {
@@ -2460,8 +2467,8 @@ struct ContainsUnownedObjC {
24602467
unowned let x: C
24612468
}
24622469
// CHECK-LABEL: define {{.*}} @optional_unowned() {{.*}} {
2463-
// CHECK-64: ret { [[WORD]], [[WORD]] } { [[WORD]] 0, [[WORD]] 1 }
2464-
// CHECK-32: ret { [[WORD]], [[WORD]] } { [[WORD]] 0, [[WORD]] 1 }
2470+
// CHECK-objc: ret { [[WORD]], [[WORD]], i8 } { [[WORD]] 0, [[WORD]] 0, i8 1 }
2471+
// CHECK-native: ret { [[WORD]], [[WORD]] } { [[WORD]] 0, [[WORD]] 1 }
24652472
sil @optional_unowned : $@convention(thin) () -> (Optionable<ContainsUnowned>, Optionable<Optionable<ContainsUnowned>>) {
24662473
entry:
24672474
%a = enum $Optionable<ContainsUnowned>, #Optionable.none!enumelt
@@ -2470,8 +2477,8 @@ entry:
24702477
return %t : $(Optionable<ContainsUnowned>, Optionable<Optionable<ContainsUnowned>>)
24712478
}
24722479
// CHECK-LABEL: define {{.*}} @optional_unowned_objc() {{.*}} {
2473-
// CHECK-64: ret { [[WORD]], [[WORD]] } { [[WORD]] 0, [[WORD]] 1 }
2474-
// CHECK-32: ret { [[WORD]], [[WORD]] } { [[WORD]] 0, [[WORD]] 1 }
2480+
// CHECK-objc: ret { [[WORD]], [[WORD]], i8 } { [[WORD]] 0, [[WORD]] 0, i8 1 }
2481+
// CHECK-native: ret { [[WORD]], [[WORD]] } { [[WORD]] 0, [[WORD]] 1 }
24752482
sil @optional_unowned_objc : $@convention(thin) () -> (Optionable<ContainsUnownedObjC>, Optionable<Optionable<ContainsUnownedObjC>>) {
24762483
entry:
24772484
%a = enum $Optionable<ContainsUnownedObjC>, #Optionable.none!enumelt

0 commit comments

Comments
 (0)