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(
14501450  auto  &Mod = Inst->getModule ();
14511451
14521452  if  (TargetType->isAnyExistentialType () &&
1453-       !SourceType->isAnyExistentialType ()) {
1453+       !SourceType->canBeExistential ()) {
14541454    auto  &Ctx = Mod.getASTContext ();
14551455
14561456    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):
14251425  return %2 : $()
14261426}
14271427
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+ }
14281455// Test constant folding of Builtin.globalStringTablePointer.
14291456
14301457// CHECK-LABEL: sil @replace_global_string_table_pointer
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments