@@ -454,6 +454,11 @@ std::string LinkEntity::mangleAsString() const {
454454 Result.append (" Tu" );
455455 return Result;
456456 }
457+ case Kind::KnownAsyncFunctionPointer: {
458+ std::string Result (static_cast <char *>(Pointer));
459+ Result.append (" Tu" );
460+ return Result;
461+ }
457462
458463 case Kind::AsyncFunctionPointerAST: {
459464 std::string Result;
@@ -748,6 +753,8 @@ SILLinkage LinkEntity::getLinkage(ForDefinition_t forDefinition) const {
748753 case Kind::PartialApplyForwarderAsyncFunctionPointer:
749754 return getUnderlyingEntityForAsyncFunctionPointer ()
750755 .getLinkage (ForDefinition);
756+ case Kind::KnownAsyncFunctionPointer:
757+ return SILLinkage::PublicExternal;
751758 case Kind::PartialApplyForwarder:
752759 return SILLinkage::Private;
753760 }
@@ -833,6 +840,7 @@ bool LinkEntity::isContextDescriptor() const {
833840 case Kind::NoncanonicalSpecializedGenericTypeMetadataCacheVariable:
834841 case Kind::CanonicalPrespecializedGenericTypeCachingOnceToken:
835842 case Kind::PartialApplyForwarder:
843+ case Kind::KnownAsyncFunctionPointer:
836844 return false ;
837845 }
838846 llvm_unreachable (" invalid descriptor" );
@@ -949,6 +957,7 @@ llvm::Type *LinkEntity::getDefaultDeclarationType(IRGenModule &IGM) const {
949957 case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
950958 case Kind::PartialApplyForwarderAsyncFunctionPointer:
951959 case Kind::AsyncFunctionPointerAST:
960+ case Kind::KnownAsyncFunctionPointer:
952961 return IGM.AsyncFunctionPointerTy ;
953962 case Kind::PartialApplyForwarder:
954963 return IGM.FunctionPtrTy ;
@@ -984,6 +993,7 @@ Alignment LinkEntity::getAlignment(IRGenModule &IGM) const {
984993 case Kind::DispatchThunkInitializerAsyncFunctionPointer:
985994 case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
986995 case Kind::PartialApplyForwarderAsyncFunctionPointer:
996+ case Kind::KnownAsyncFunctionPointer:
987997 case Kind::ObjCClassRef:
988998 case Kind::ObjCClass:
989999 case Kind::TypeMetadataLazyCacheVariable:
@@ -1134,6 +1144,12 @@ bool LinkEntity::isWeakImported(ModuleDecl *module) const {
11341144 case Kind::PartialApplyForwarderAsyncFunctionPointer:
11351145 return getUnderlyingEntityForAsyncFunctionPointer ()
11361146 .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 ());
11371153 }
11381154
11391155 llvm_unreachable (" Bad link entity kind" );
@@ -1241,6 +1257,7 @@ DeclContext *LinkEntity::getDeclContextForEmission() const {
12411257 case Kind::ValueWitnessTable:
12421258 case Kind::DifferentiabilityWitness:
12431259 case Kind::PartialApplyForwarder:
1260+ case Kind::KnownAsyncFunctionPointer:
12441261 return nullptr ;
12451262
12461263 case Kind::AsyncFunctionPointer:
0 commit comments