@@ -1247,6 +1247,47 @@ bb2(%9 : $Error):
12471247 throw %9 : $Error
12481248}
12491249
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+
12501291// CHECK-LABEL: sil [ossa] @fixeeLifetime : {{.*}} {
12511292// CHECK: {{bb[0-9]+}}([[ADDR:%[^,]+]] : $*T):
12521293// CHECK: fix_lifetime [[ADDR]]
0 commit comments