1
1
// #if directives don't work with SIL keywords, therefore please put ObjC tests
2
2
// 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
5
5
6
6
// REQUIRES: CPU=i386 || CPU=x86_64
7
7
@@ -1122,8 +1122,10 @@ enum SinglePayloadClass {
1122
1122
// CHECK-64: entry:
1123
1123
// CHECK-64: switch i64 %0, label {{%.*}} [
1124
1124
// 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 {{%.*}}
1127
1129
// CHECK-64: ]
1128
1130
// CHECK-64: ; <label>
1129
1131
// CHECK-64: inttoptr [[WORD]] %0 to %T4enum1CC*
@@ -1165,11 +1167,14 @@ enum SinglePayloadClassProtocol {
1165
1167
// CHECK-64: define{{( dllexport)?}}{{( protected)?}} swiftcc void @single_payload_class_protocol_switch(i64, i64) {{.*}} {
1166
1168
// CHECK-64: switch i64 %0, label {{%.*}} [
1167
1169
// 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 {{%.*}}
1170
1174
// CHECK-64: ]
1171
1175
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*
1173
1178
// CHECK-64: inttoptr i64 %1 to i8**
1174
1179
1175
1180
// CHECK-32: define{{( dllexport)?}}{{( protected)?}} swiftcc void @single_payload_class_protocol_switch(i32, i32) {{.*}} {
@@ -1179,7 +1184,8 @@ enum SinglePayloadClassProtocol {
1179
1184
// CHECK-32: i32 2, label {{%.*}}
1180
1185
// CHECK-32: ]
1181
1186
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*
1183
1189
// CHECK-32: inttoptr i32 %1 to i8**
1184
1190
1185
1191
sil @single_payload_class_protocol_switch : $(SinglePayloadClassProtocol) -> () {
@@ -2439,7 +2445,8 @@ entry(%0 : $DynamicSingleton<NoPayloads>):
2439
2445
// Check that payloads get properly masked in nested single-payload enums.
2440
2446
// rdar://problem/18841262
2441
2447
// 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
2443
2450
// CHECK-32-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc i1 @optional_optional_class_protocol(i32, i32)
2444
2451
// CHECK-32: icmp eq i32 %0, 1
2445
2452
enum Optionable<T> {
@@ -2460,8 +2467,8 @@ struct ContainsUnownedObjC {
2460
2467
unowned let x: C
2461
2468
}
2462
2469
// 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 }
2465
2472
sil @optional_unowned : $@convention(thin) () -> (Optionable<ContainsUnowned>, Optionable<Optionable<ContainsUnowned>>) {
2466
2473
entry:
2467
2474
%a = enum $Optionable<ContainsUnowned>, #Optionable.none!enumelt
@@ -2470,8 +2477,8 @@ entry:
2470
2477
return %t : $(Optionable<ContainsUnowned>, Optionable<Optionable<ContainsUnowned>>)
2471
2478
}
2472
2479
// 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 }
2475
2482
sil @optional_unowned_objc : $@convention(thin) () -> (Optionable<ContainsUnownedObjC>, Optionable<Optionable<ContainsUnownedObjC>>) {
2476
2483
entry:
2477
2484
%a = enum $Optionable<ContainsUnownedObjC>, #Optionable.none!enumelt
0 commit comments