File tree Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Expand file tree Collapse file tree 2 files changed +28
-1
lines changed Original file line number Diff line number Diff line change @@ -1450,7 +1450,7 @@ static bool optimizeStaticallyKnownProtocolConformance(
1450
1450
auto &Mod = Inst->getModule ();
1451
1451
1452
1452
if (TargetType->isAnyExistentialType () &&
1453
- !SourceType->isAnyExistentialType ()) {
1453
+ !SourceType->canBeExistential ()) {
1454
1454
auto &Ctx = Mod.getASTContext ();
1455
1455
1456
1456
auto *Proto = dyn_cast_or_null<ProtocolDecl>(TargetType->getAnyNominal ());
Original file line number Diff line number Diff line change @@ -1425,6 +1425,33 @@ bb0(%0 : $*Error, %1 : $*E1):
1425
1425
return %2 : $()
1426
1426
}
1427
1427
1428
+ // CHECK-LABEL: sil [ossa] @generic_to_existential_cast
1429
+ // CHECK: init_existential_addr
1430
+ // CHECK: } // end sil function 'generic_to_existential_cast'
1431
+ sil [ossa] @generic_to_existential_cast : $@convention(thin) <T where T : P> (@in_guaranteed T) -> @out any P {
1432
+ bb0(%0: $*any P, %1 : $*T):
1433
+ %29 = alloc_stack $T
1434
+ copy_addr %1 to [init] %29
1435
+ unconditional_checked_cast_addr T in %29 to any P in %0
1436
+ dealloc_stack %29
1437
+ %10 = tuple ()
1438
+ return %10
1439
+ }
1440
+
1441
+ // CHECK-LABEL: sil [ossa] @existential_generic_to_existential_cast
1442
+ // CHECK: unconditional_checked_cast_addr
1443
+ // CHECK: } // end sil function 'existential_generic_to_existential_cast'
1444
+ sil [ossa] @existential_generic_to_existential_cast : $@convention(thin) <T where T : Error> (@in_guaranteed T) -> @owned any Error {
1445
+ bb0(%0 : $*T):
1446
+ %29 = alloc_stack $T
1447
+ copy_addr %0 to [init] %29
1448
+ %31 = alloc_stack $any Error
1449
+ unconditional_checked_cast_addr T in %29 to any Error in %31
1450
+ %33 = load [take] %31
1451
+ dealloc_stack %31
1452
+ dealloc_stack %29
1453
+ return %33
1454
+ }
1428
1455
// Test constant folding of Builtin.globalStringTablePointer.
1429
1456
1430
1457
// CHECK-LABEL: sil @replace_global_string_table_pointer
You can’t perform that action at this time.
0 commit comments