Skip to content

Commit 12d1ebc

Browse files
committed
fix the linkage of async func ptr to distributed accessors
1 parent 28e700d commit 12d1ebc

File tree

4 files changed

+22
-28
lines changed

4 files changed

+22
-28
lines changed

include/swift/IRGen/Linking.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1268,8 +1268,7 @@ class LinkEntity {
12681268

12691269
case LinkEntity::Kind::DistributedAccessor: {
12701270
entity.Data = LINKENTITY_SET_FIELD(
1271-
Kind,
1272-
unsigned(LinkEntity::Kind::DistributedAccessorAsyncPointer));
1271+
Kind, unsigned(LinkEntity::Kind::DistributedAccessorAsyncPointer));
12731272
break;
12741273
}
12751274

lib/IRGen/Linking.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -880,11 +880,10 @@ SILLinkage LinkEntity::getLinkage(ForDefinition_t forDefinition) const {
880880
case Kind::KnownAsyncFunctionPointer:
881881
return SILLinkage::PublicExternal;
882882
case Kind::PartialApplyForwarder:
883-
case Kind::DistributedAccessor:
884883
return SILLinkage::Private;
884+
case Kind::DistributedAccessor:
885885
case Kind::AccessibleFunctionRecord:
886-
return getSILFunction()->isDistributed() ? SILLinkage::Private
887-
: SILLinkage::Shared;
886+
return SILLinkage::Shared;
888887
case Kind::ExtendedExistentialTypeShape:
889888
return (isExtendedExistentialTypeShapeShared()
890889
? SILLinkage::Shared : SILLinkage::Private);

test/IRGen/runtime_attributes_on_distributed_actors.swift

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,17 @@
66
// REQUIRES: OS=macosx
77
// REQUIRES: concurrency
88

9-
// CHECK: @"$s28runtime_attributes_on_actors9TestActorC15asyncExternallyyyKcvpfaAA17FlagForAsyncFuncsHF"
10-
// CHECK: @"$s28runtime_attributes_on_actors9TestActorC11doSomethingyyYaKcvpfaAA17FlagForAsyncFuncsHF"
11-
// CHECK: @"$s28runtime_attributes_on_actors9TestActorC11doSomethingyySiYacvpfaAA17FlagForAsyncFuncsHF"
12-
// CHECK: @"$s28runtime_attributes_on_actors9TestActorC11doSomething_1xySi_SaySiGztYacvpfaAA17FlagForAsyncFuncsHF"
13-
// CHECK: @"$s28runtime_attributes_on_actors13globalAsyncFnSaySSGyYacvpfaAA07FlagForF5FuncsHF"
14-
15-
// CHECK: @"$s28runtime_attributes_on_actors17FlagForAsyncFuncsVHa" = internal constant
16-
// CHECK-SAME: i32 5
17-
// CHECK-SAME: %swift.accessible_function* @"$s28runtime_attributes_on_actors9TestActorC15asyncExternallyyyKcvpfaAA17FlagForAsyncFuncsHF"
18-
// CHECK-SAME: %swift.accessible_function* @"$s28runtime_attributes_on_actors9TestActorC11doSomethingyyYaKcvpfaAA17FlagForAsyncFuncsHF"
19-
// CHECK-SAME: %swift.accessible_function* @"$s28runtime_attributes_on_actors9TestActorC11doSomethingyySiYacvpfaAA17FlagForAsyncFuncsHF"
20-
// CHECK-SAME: %swift.accessible_function* @"$s28runtime_attributes_on_actors9TestActorC11doSomething_1xySi_SaySiGztYacvpfaAA17FlagForAsyncFuncsHF"
21-
// CHECK-SAME: %swift.accessible_function* @"$s28runtime_attributes_on_actors13globalAsyncFnSaySSGyYacvpfaAA07FlagForF5FuncsHF"
9+
// : @"$s28runtime_attributes_on_distributed_actors9TestActorC15asyncExternallyyyKcvpfaAA17FlagForAsyncFuncsHF"
10+
// : @"$s28runtime_attributes_on_distributed_actors9TestActorC11doSomethingyyYaKcvpfaAA17FlagForAsyncFuncsHF"
11+
// : @"$s28runtime_attributes_on_distributed_actors9TestActorC11doSomethingyySiYacvpfaAA17FlagForAsyncFuncsHF"
12+
// : @"$s28runtime_attributes_on_distributed_actors9TestActorC11doSomething_1xySi_SaySiGztYacvpfaAA17FlagForAsyncFuncsHF"
13+
14+
// : @"$s40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVHa" = internal constant
15+
// SAME: i32 5 4
16+
// SAME: %swift.accessible_function* @"s40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVAA9TestActorC15asyncExternallyyyKFfaHF"
17+
// SAME: %swift.accessible_function* @"$s40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVAA9TestActorC11doSomethingyyYaKFfaHF"
18+
// SAME: %swift.accessible_function* @"$s40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVAA9TestActorC11doSomethingyySiYaFfaHF"
19+
// SAME: %swift.accessible_function* @"$s40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVAA9TestActorC11doSomething_1xySi_SaySiGtYaFfaHF"
2220

2321
import Distributed
2422

@@ -33,15 +31,15 @@ struct FlagForAsyncFuncs {
3331
distributed actor TestActor {
3432
typealias ActorSystem = LocalTestingDistributedActorSystem
3533

36-
// CHECK-LABEL: define hidden swiftcc void @"$s28runtime_attributes_on_actors9TestActorC15asyncExternallyyyKcvpfaAA17FlagForAsyncFuncs"(%T28runtime_attributes_on_actors17FlagForAsyncFuncsVSg* noalias nocapture sret(%T28runtime_attributes_on_actors17FlagForAsyncFuncsVSg) %0)
34+
// CHECK-LABEL: define hidden swiftcc void @"$s40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVAA9TestActorC15asyncExternallyyyKFfa"(%T40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVSg* noalias nocapture sret(%T40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVSg) %0)
3735
@FlagForAsyncFuncs distributed func asyncExternally() throws {}
3836

39-
// CHECK-LABEL: define hidden swiftcc void @"$s28runtime_attributes_on_actors9TestActorC11doSomethingyyYaKcvpfaAA17FlagForAsyncFuncs"(%T28runtime_attributes_on_actors17FlagForAsyncFuncsVSg* noalias nocapture sret(%T28runtime_attributes_on_actors17FlagForAsyncFuncsVSg) %0)
37+
// CHECK-LABEL: define hidden swiftcc void @"$s40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVAA9TestActorC11doSomethingyyYaKFfa"(%T40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVSg* noalias nocapture sret(%T40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVSg) %0)
4038
@FlagForAsyncFuncs distributed func doSomething() async throws {}
4139

42-
// CHECK-LABEL: define hidden swiftcc void @"$s28runtime_attributes_on_actors9TestActorC11doSomethingyySiYacvpfaAA17FlagForAsyncFuncs"(%T28runtime_attributes_on_actors17FlagForAsyncFuncsVSg* noalias nocapture sret(%T28runtime_attributes_on_actors17FlagForAsyncFuncsVSg) %0)
40+
// CHECK-LABEL: define hidden swiftcc void @"$s40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVAA9TestActorC11doSomethingyySiYaFfa"(%T40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVSg* noalias nocapture sret(%T40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVSg) %0)
4341
@FlagForAsyncFuncs nonisolated func doSomething(_: Int) async {}
4442

45-
// CHECK-LABEL: define hidden swiftcc void @"$s28runtime_attributes_on_actors9TestActorC11doSomething_1xySi_SaySiGztYacvpfaAA17FlagForAsyncFuncs"(%T28runtime_attributes_on_actors17FlagForAsyncFuncsVSg* noalias nocapture sret(%T28runtime_attributes_on_actors17FlagForAsyncFuncsVSg) %0)
43+
// CHECK-LABEL: define hidden swiftcc void @"$s40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVAA9TestActorC11doSomething_1xySi_SaySiGtYaFfa"(%T40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVSg* noalias nocapture sret(%T40runtime_attributes_on_distributed_actors17FlagForAsyncFuncsVSg) %0)
4644
@FlagForAsyncFuncs distributed func doSomething(_: Int, x: [Int]) async {}
4745
}

test/type/runtime_discoverable_attrs_distributed.swift

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,18 @@ typealias DefaultDistributedActorSystem = LocalTestingDistributedActorSystem
1111

1212
@runtimeMetadata
1313
struct FlagForAsyncFuncs {
14-
init<Act>(attachedTo: (Act) async throws -> Void) {}
15-
init<Act>(attachedTo: (Act, Int, inout [Int]) async throws -> Void) {}
16-
init<Act>(attachedTo: (Act, Int) async -> Void) {}
14+
init<Act: DistributedActor>(attachedTo: (Act) async throws -> Void) {}
15+
init<Act: DistributedActor>(attachedTo: (Act, Int, [Int]) async throws -> Void) {}
16+
init<Act: DistributedActor>(attachedTo: (Act, Int) async -> Void) {}
1717
init(attachedTo: () async -> [String]) {}
1818
}
1919

2020
@ActorFlag
2121
distributed actor TestDistributedActor {
22+
@FlagForAsyncFuncs distributed func asyncExternallyAsyncDist() {} // ok
2223
@FlagForAsyncFuncs distributed func asyncExternallyDist() throws {} // ok
23-
2424
@FlagForAsyncFuncs distributed func doSomethingDist() async throws {} // ok
25-
2625
@FlagForAsyncFuncs nonisolated func doSomethingNonisolated(_: Int) async {} // ok
27-
2826
@FlagForAsyncFuncs distributed func doSomethingDist(_: Int, x: [Int]) async {} // ok
2927
}
3028

0 commit comments

Comments
 (0)