Skip to content

Commit 7b3c47f

Browse files
authored
Merge pull request #69475 from slavapestov/fix-extended-existential-metadata-weak-5.10
IRGen: Weak-link references to swift_getExtendedExistentialTypeMetadata() [5.10]
2 parents ca66cc0 + bec2ca1 commit 7b3c47f

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

include/swift/Runtime/RuntimeFunctions.def

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,7 +1177,8 @@ FUNCTION(GetExistentialMetadata,
11771177
// swift_getExtendedExistentialTypeShape(
11781178
// const NonUniqueExtendedExistentialTypeShape *nonUnique);
11791179
FUNCTION(GetExtendedExistentialTypeShape,
1180-
swift_getExtendedExistentialTypeShape, C_CC, AlwaysAvailable,
1180+
swift_getExtendedExistentialTypeShape, C_CC,
1181+
ParameterizedExistentialAvailability,
11811182
RETURNS(TypeMetadataPtrTy),
11821183
ARGS(Int8PtrTy, Int8PtrPtrTy),
11831184
ATTRS(NoUnwind, ArgMemOnly, WillReturn),
@@ -1187,7 +1188,8 @@ FUNCTION(GetExtendedExistentialTypeShape,
11871188
// const NonUniqueExtendedExistentialTypeShape *shape,
11881189
// const void * const *generalizationArgs);
11891190
FUNCTION(GetExtendedExistentialTypeMetadata,
1190-
swift_getExtendedExistentialTypeMetadata, C_CC, AlwaysAvailable,
1191+
swift_getExtendedExistentialTypeMetadata, C_CC,
1192+
ParameterizedExistentialAvailability,
11911193
RETURNS(TypeMetadataPtrTy),
11921194
ARGS(Int8PtrTy, Int8PtrPtrTy),
11931195
ATTRS(NoUnwind, ArgMemOnly, WillReturn),
@@ -1197,7 +1199,8 @@ FUNCTION(GetExtendedExistentialTypeMetadata,
11971199
// const ExtendedExistentialTypeShape *shape,
11981200
// const void * const *generalizationArgs);
11991201
FUNCTION(GetExtendedExistentialTypeMetadataUnique,
1200-
swift_getExtendedExistentialTypeMetadata_unique, C_CC, AlwaysAvailable,
1202+
swift_getExtendedExistentialTypeMetadata_unique, C_CC,
1203+
ParameterizedExistentialAvailability,
12011204
RETURNS(TypeMetadataPtrTy),
12021205
ARGS(Int8PtrTy, Int8PtrPtrTy),
12031206
ATTRS(NoUnwind, ArgMemOnly, WillReturn),

lib/IRGen/IRGenModule.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -920,6 +920,14 @@ namespace RuntimeConstants {
920920
return RuntimeAvailability::ConditionallyAvailable;
921921
}
922922

923+
RuntimeAvailability ParameterizedExistentialAvailability(ASTContext &Context) {
924+
auto featureAvailability = Context.getParameterizedExistentialRuntimeAvailability();
925+
if (!isDeploymentAvailabilityContainedIn(Context, featureAvailability)) {
926+
return RuntimeAvailability::ConditionallyAvailable;
927+
}
928+
return RuntimeAvailability::AlwaysAvailable;
929+
}
930+
923931
} // namespace RuntimeConstants
924932

925933
// We don't use enough attributes to justify generalizing the
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// RUN: %target-swift-frontend -emit-ir %s -target %target-swift-abi-5.5-triple | %FileCheck %s
2+
// REQUIRES: VENDOR=apple
3+
4+
public protocol P<A> {
5+
associatedtype A
6+
}
7+
8+
public func f<T>(_: T.Type) {}
9+
10+
@available(SwiftStdlib 5.7, *)
11+
public func g<T>(_: T.Type) { f((any P<T>).self) }
12+
13+
// CHECK-LABEL: declare extern_weak {{.*}} @swift_getExtendedExistentialTypeMetadata(

0 commit comments

Comments
 (0)