@@ -454,6 +454,11 @@ std::string LinkEntity::mangleAsString() const {
454
454
Result.append (" Tu" );
455
455
return Result;
456
456
}
457
+ case Kind::KnownAsyncFunctionPointer: {
458
+ std::string Result (static_cast <char *>(Pointer));
459
+ Result.append (" Tu" );
460
+ return Result;
461
+ }
457
462
458
463
case Kind::AsyncFunctionPointerAST: {
459
464
std::string Result;
@@ -748,6 +753,8 @@ SILLinkage LinkEntity::getLinkage(ForDefinition_t forDefinition) const {
748
753
case Kind::PartialApplyForwarderAsyncFunctionPointer:
749
754
return getUnderlyingEntityForAsyncFunctionPointer ()
750
755
.getLinkage (ForDefinition);
756
+ case Kind::KnownAsyncFunctionPointer:
757
+ return SILLinkage::PublicExternal;
751
758
case Kind::PartialApplyForwarder:
752
759
return SILLinkage::Private;
753
760
}
@@ -833,6 +840,7 @@ bool LinkEntity::isContextDescriptor() const {
833
840
case Kind::NoncanonicalSpecializedGenericTypeMetadataCacheVariable:
834
841
case Kind::CanonicalPrespecializedGenericTypeCachingOnceToken:
835
842
case Kind::PartialApplyForwarder:
843
+ case Kind::KnownAsyncFunctionPointer:
836
844
return false ;
837
845
}
838
846
llvm_unreachable (" invalid descriptor" );
@@ -949,6 +957,7 @@ llvm::Type *LinkEntity::getDefaultDeclarationType(IRGenModule &IGM) const {
949
957
case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
950
958
case Kind::PartialApplyForwarderAsyncFunctionPointer:
951
959
case Kind::AsyncFunctionPointerAST:
960
+ case Kind::KnownAsyncFunctionPointer:
952
961
return IGM.AsyncFunctionPointerTy ;
953
962
case Kind::PartialApplyForwarder:
954
963
return IGM.FunctionPtrTy ;
@@ -984,6 +993,7 @@ Alignment LinkEntity::getAlignment(IRGenModule &IGM) const {
984
993
case Kind::DispatchThunkInitializerAsyncFunctionPointer:
985
994
case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
986
995
case Kind::PartialApplyForwarderAsyncFunctionPointer:
996
+ case Kind::KnownAsyncFunctionPointer:
987
997
case Kind::ObjCClassRef:
988
998
case Kind::ObjCClass:
989
999
case Kind::TypeMetadataLazyCacheVariable:
@@ -1134,6 +1144,12 @@ bool LinkEntity::isWeakImported(ModuleDecl *module) const {
1134
1144
case Kind::PartialApplyForwarderAsyncFunctionPointer:
1135
1145
return getUnderlyingEntityForAsyncFunctionPointer ()
1136
1146
.isWeakImported (module );
1147
+ case Kind::KnownAsyncFunctionPointer:
1148
+ auto &context = module ->getASTContext ();
1149
+ auto deploymentAvailability =
1150
+ AvailabilityContext::forDeploymentTarget (context);
1151
+ return !deploymentAvailability.isContainedIn (
1152
+ context.getConcurrencyAvailability ());
1137
1153
}
1138
1154
1139
1155
llvm_unreachable (" Bad link entity kind" );
@@ -1241,6 +1257,7 @@ DeclContext *LinkEntity::getDeclContextForEmission() const {
1241
1257
case Kind::ValueWitnessTable:
1242
1258
case Kind::DifferentiabilityWitness:
1243
1259
case Kind::PartialApplyForwarder:
1260
+ case Kind::KnownAsyncFunctionPointer:
1244
1261
return nullptr ;
1245
1262
1246
1263
case Kind::AsyncFunctionPointer:
0 commit comments