mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[Distributed] Handle mangling thunks in extensions with generic AS and $Stubs (#71914)
This commit is contained in:
committed by
GitHub
parent
92f3b0f2c4
commit
c56a1e8be7
@@ -524,15 +524,19 @@ std::string LinkEntity::mangleAsString() const {
|
||||
}
|
||||
|
||||
case Kind::AccessibleFunctionRecord: {
|
||||
auto DC = getSILFunction()->getDeclContext();
|
||||
|
||||
auto thunk = dyn_cast<AbstractFunctionDecl>(DC);
|
||||
if (thunk && thunk->isDistributedThunk()) {
|
||||
ASTMangler mangler;
|
||||
return mangler.mangleDistributedThunkRecord(thunk);
|
||||
}
|
||||
|
||||
// Otherwise use the default mangling: just the function name
|
||||
std::string Result(getSILFunction()->getName());
|
||||
Result.append("HF");
|
||||
return Result;
|
||||
}
|
||||
case Kind::AccessibleProtocolRequirementFunctionRecord: {
|
||||
std::string Result(getSILFunction()->getName());
|
||||
Result.append("HpF");
|
||||
return Result;
|
||||
}
|
||||
|
||||
case Kind::ExtendedExistentialTypeShape: {
|
||||
auto genSig = getExtendedExistentialTypeShapeGenSig();
|
||||
@@ -888,7 +892,6 @@ SILLinkage LinkEntity::getLinkage(ForDefinition_t forDefinition) const {
|
||||
return SILLinkage::Private;
|
||||
case Kind::DistributedAccessor:
|
||||
case Kind::AccessibleFunctionRecord:
|
||||
case Kind::AccessibleProtocolRequirementFunctionRecord:
|
||||
return SILLinkage::Shared;
|
||||
case Kind::ExtendedExistentialTypeShape:
|
||||
return (isExtendedExistentialTypeShapeShared()
|
||||
@@ -986,7 +989,6 @@ bool LinkEntity::isContextDescriptor() const {
|
||||
case Kind::KnownAsyncFunctionPointer:
|
||||
case Kind::DistributedAccessor:
|
||||
case Kind::AccessibleFunctionRecord:
|
||||
case Kind::AccessibleProtocolRequirementFunctionRecord:
|
||||
case Kind::ExtendedExistentialTypeShape:
|
||||
return false;
|
||||
}
|
||||
@@ -1113,8 +1115,6 @@ llvm::Type *LinkEntity::getDefaultDeclarationType(IRGenModule &IGM) const {
|
||||
return IGM.FunctionPtrTy;
|
||||
case Kind::AccessibleFunctionRecord:
|
||||
return IGM.AccessibleFunctionRecordTy;
|
||||
case Kind::AccessibleProtocolRequirementFunctionRecord:
|
||||
return IGM.AccessibleProtocolRequirementFunctionRecordTy;
|
||||
case Kind::ExtendedExistentialTypeShape:
|
||||
return IGM.RelativeAddressTy;
|
||||
default:
|
||||
@@ -1148,7 +1148,6 @@ Alignment LinkEntity::getAlignment(IRGenModule &IGM) const {
|
||||
case Kind::OpaqueTypeDescriptor:
|
||||
case Kind::OpaqueTypeDescriptorRecord:
|
||||
case Kind::AccessibleFunctionRecord:
|
||||
case Kind::AccessibleProtocolRequirementFunctionRecord:
|
||||
case Kind::ExtendedExistentialTypeShape:
|
||||
return Alignment(4);
|
||||
case Kind::AsyncFunctionPointer:
|
||||
@@ -1293,7 +1292,6 @@ bool LinkEntity::isText() const {
|
||||
case Kind::CanonicalSpecializedGenericSwiftMetaclassStub:
|
||||
case Kind::NoncanonicalSpecializedGenericTypeMetadata:
|
||||
case Kind::AccessibleFunctionRecord:
|
||||
case Kind::AccessibleProtocolRequirementFunctionRecord:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1414,7 +1412,6 @@ bool LinkEntity::isWeakImported(ModuleDecl *module) const {
|
||||
case Kind::CoroutineContinuationPrototype:
|
||||
case Kind::DifferentiabilityWitness:
|
||||
case Kind::AccessibleFunctionRecord:
|
||||
case Kind::AccessibleProtocolRequirementFunctionRecord:
|
||||
case Kind::ExtendedExistentialTypeShape:
|
||||
return false;
|
||||
|
||||
@@ -1559,8 +1556,7 @@ DeclContext *LinkEntity::getDeclContextForEmission() const {
|
||||
.getDeclContextForEmission();
|
||||
|
||||
case Kind::DistributedAccessor:
|
||||
case Kind::AccessibleFunctionRecord:
|
||||
case Kind::AccessibleProtocolRequirementFunctionRecord: {
|
||||
case Kind::AccessibleFunctionRecord: {
|
||||
return getSILFunction()->getParentModule();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user