@@ -1247,6 +1247,47 @@ bb2(%9 : $Error):
1247
1247
throw %9 : $Error
1248
1248
}
1249
1249
1250
+ // CHECK-LABEL: sil [ossa] @f261_testTryApplyIntoEnum : $@convention(thin) <T> () -> (@out Optional<T>, @error any Error) {
1251
+ // CHECK: {{bb[0-9]+}}([[OUT_ADDR:%[^,]+]] : $*Optional<T>):
1252
+ // CHECK: [[SOME_ADDR:%[^,]+]] = init_enum_data_addr %0 : $*Optional<T>, #Optional.some!enumelt
1253
+ // CHECK: try_apply undef<T>([[SOME_ADDR]]) {{.*}}, normal [[NORMAL:bb[0-9]+]], error {{bb[0-9]+}}
1254
+ // CHECK: [[NORMAL]]
1255
+ // CHECK: inject_enum_addr [[OUT_ADDR]] : $*Optional<T>, #Optional.some!enumelt
1256
+ // CHECK-LABEL: } // end sil function 'f261_testTryApplyIntoEnum'
1257
+ sil [ossa] @f261_testTryApplyIntoEnum : $@convention(thin) <T> () -> (@out Optional<T>, @error any Error) {
1258
+ entry:
1259
+ try_apply undef<T>() : $@convention(thin) <T> () -> (@out T, @error any Error), normal okay, error nopers
1260
+
1261
+ okay(%instance : @owned $T):
1262
+ %some = enum $Optional<T>, #Optional.some!enumelt, %instance : $T
1263
+ return %some : $Optional<T>
1264
+
1265
+ nopers(%error : @owned $any Error):
1266
+ throw %error : $any Error
1267
+ }
1268
+
1269
+ // CHECK-LABEL: sil [ossa] @f262_testTryApplyIntoPhi : {{.*}} {
1270
+ // CHECK: {{bb[0-9]+}}([[ADDR:%[^,]+]] :
1271
+ // CHECK: try_apply undef<R>([[ADDR]]) {{.*}}, normal [[NORMAL:bb[0-9]+]]
1272
+ // CHECK: [[NORMAL]](%2 : $()):
1273
+ // CHECK: br [[EXIT:bb[0-9]+]]
1274
+ // CHECK: [[EXIT]]:
1275
+ // CHECK: return {{%[^,]+}} : $()
1276
+ // CHECK-LABEL: } // end sil function 'f262_testTryApplyIntoPhi'
1277
+ sil [ossa] @f262_testTryApplyIntoPhi : $@convention(thin) <R> () -> (@out R, @error any Error) {
1278
+ entry:
1279
+ try_apply undef<R>() : $@convention(thin) <U> () -> (@out U, @error any Error), normal good, error bad
1280
+
1281
+ good(%instance : @owned $R):
1282
+ br exit(%instance : $R)
1283
+
1284
+ exit(%instance_2 : @owned $R):
1285
+ return %instance_2 : $R
1286
+
1287
+ bad(%41 : @owned $any Error):
1288
+ throw %41 : $any Error
1289
+ }
1290
+
1250
1291
// CHECK-LABEL: sil [ossa] @fixeeLifetime : {{.*}} {
1251
1292
// CHECK: {{bb[0-9]+}}([[ADDR:%[^,]+]] : $*T):
1252
1293
// CHECK: fix_lifetime [[ADDR]]
0 commit comments