Skip to content

Commit f7d8664

Browse files
committed
[IRGen] Added LinkEntity for AFP to PAF.
The new AFP entity follows the pattern set by previous AFP entities.
1 parent 3806f91 commit f7d8664

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

include/swift/IRGen/Linking.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,10 @@ class LinkEntity {
452452
/// which are captured.
453453
/// The pointer is an llvm::Function*.
454454
PartialApplyForwarder,
455+
456+
/// An async function pointer to a partial apply forwarder.
457+
/// The pointer is the llvm::Function* for a partial apply forwarder.
458+
PartialApplyForwarderAsyncFunctionPointer,
455459
};
456460
friend struct llvm::DenseMapInfo<LinkEntity>;
457461

@@ -1175,6 +1179,10 @@ class LinkEntity {
11751179
entity.Data = LINKENTITY_SET_FIELD(
11761180
Kind, unsigned(LinkEntity::Kind::DispatchThunkAllocatorAsyncFunctionPointer));
11771181
break;
1182+
case LinkEntity::Kind::PartialApplyForwarder:
1183+
entity.Data = LINKENTITY_SET_FIELD(
1184+
Kind, unsigned(LinkEntity::Kind::PartialApplyForwarderAsyncFunctionPointer));
1185+
break;
11781186

11791187
default:
11801188
llvm_unreachable("Link entity kind cannot have an async function pointer");
@@ -1215,6 +1223,11 @@ class LinkEntity {
12151223
Kind, unsigned(LinkEntity::Kind::DispatchThunkAllocator));
12161224
break;
12171225

1226+
case LinkEntity::Kind::PartialApplyForwarderAsyncFunctionPointer:
1227+
entity.Data = LINKENTITY_SET_FIELD(
1228+
Kind, unsigned(LinkEntity::Kind::PartialApplyForwarder));
1229+
break;
1230+
12181231
default:
12191232
llvm_unreachable("Link entity is not an async function pointer");
12201233
}

lib/IRGen/Linking.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,8 @@ std::string LinkEntity::mangleAsString() const {
447447
case Kind::AsyncFunctionPointer:
448448
case Kind::DispatchThunkAsyncFunctionPointer:
449449
case Kind::DispatchThunkInitializerAsyncFunctionPointer:
450-
case Kind::DispatchThunkAllocatorAsyncFunctionPointer: {
450+
case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
451+
case Kind::PartialApplyForwarderAsyncFunctionPointer: {
451452
std::string Result(getUnderlyingEntityForAsyncFunctionPointer()
452453
.mangleAsString());
453454
Result.append("Tu");
@@ -742,6 +743,7 @@ SILLinkage LinkEntity::getLinkage(ForDefinition_t forDefinition) const {
742743
case Kind::DispatchThunkAsyncFunctionPointer:
743744
case Kind::DispatchThunkInitializerAsyncFunctionPointer:
744745
case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
746+
case Kind::PartialApplyForwarderAsyncFunctionPointer:
745747
return getUnderlyingEntityForAsyncFunctionPointer()
746748
.getLinkage(ForDefinition);
747749
case Kind::PartialApplyForwarder:
@@ -769,6 +771,7 @@ bool LinkEntity::isContextDescriptor() const {
769771
case Kind::DispatchThunkAsyncFunctionPointer:
770772
case Kind::DispatchThunkInitializerAsyncFunctionPointer:
771773
case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
774+
case Kind::PartialApplyForwarderAsyncFunctionPointer:
772775
case Kind::MethodDescriptor:
773776
case Kind::MethodDescriptorDerivative:
774777
case Kind::MethodDescriptorInitializer:
@@ -942,6 +945,7 @@ llvm::Type *LinkEntity::getDefaultDeclarationType(IRGenModule &IGM) const {
942945
case Kind::DispatchThunkAsyncFunctionPointer:
943946
case Kind::DispatchThunkInitializerAsyncFunctionPointer:
944947
case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
948+
case Kind::PartialApplyForwarderAsyncFunctionPointer:
945949
case Kind::AsyncFunctionPointerAST:
946950
return IGM.AsyncFunctionPointerTy;
947951
case Kind::PartialApplyForwarder:
@@ -977,6 +981,7 @@ Alignment LinkEntity::getAlignment(IRGenModule &IGM) const {
977981
case Kind::DispatchThunkAsyncFunctionPointer:
978982
case Kind::DispatchThunkInitializerAsyncFunctionPointer:
979983
case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
984+
case Kind::PartialApplyForwarderAsyncFunctionPointer:
980985
case Kind::ObjCClassRef:
981986
case Kind::ObjCClass:
982987
case Kind::TypeMetadataLazyCacheVariable:
@@ -1124,6 +1129,7 @@ bool LinkEntity::isWeakImported(ModuleDecl *module) const {
11241129
case Kind::DispatchThunkAsyncFunctionPointer:
11251130
case Kind::DispatchThunkInitializerAsyncFunctionPointer:
11261131
case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
1132+
case Kind::PartialApplyForwarderAsyncFunctionPointer:
11271133
return getUnderlyingEntityForAsyncFunctionPointer()
11281134
.isWeakImported(module);
11291135
}
@@ -1239,6 +1245,7 @@ DeclContext *LinkEntity::getDeclContextForEmission() const {
12391245
case Kind::DispatchThunkAsyncFunctionPointer:
12401246
case Kind::DispatchThunkInitializerAsyncFunctionPointer:
12411247
case Kind::DispatchThunkAllocatorAsyncFunctionPointer:
1248+
case Kind::PartialApplyForwarderAsyncFunctionPointer:
12421249
return getUnderlyingEntityForAsyncFunctionPointer()
12431250
.getDeclContextForEmission();
12441251
}

0 commit comments

Comments
 (0)