Skip to content

Commit dbb0546

Browse files
authored
Merge pull request #74675 from rjmccall/runtime-availability-update
Implement getSwiftRuntimeCompatibilityVersionForTarget for recent releases
2 parents 11696cd + 6a73d24 commit dbb0546

File tree

2 files changed

+53
-4
lines changed

2 files changed

+53
-4
lines changed

lib/Basic/Platform.cpp

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,13 @@ swift::getSwiftRuntimeCompatibilityVersionForTarget(
471471
return floorFor64(llvm::VersionTuple(5, 5));
472472
return floorFor64(llvm::VersionTuple(5, 6));
473473
} else if (Major == 13) {
474-
return floorFor64(llvm::VersionTuple(5, 7));
474+
if (Minor <= 2)
475+
return floorFor64(llvm::VersionTuple(5, 7));
476+
return floorFor64(llvm::VersionTuple(5, 8));
477+
} else if (Major == 14) {
478+
if (Minor <= 3)
479+
return floorFor64(llvm::VersionTuple(5, 9));
480+
return floorFor64(llvm::VersionTuple(5, 10));
475481
}
476482
} else if (Triple.isiOS()) { // includes tvOS
477483
llvm::VersionTuple OSVersion = Triple.getiOSVersion();
@@ -511,7 +517,13 @@ swift::getSwiftRuntimeCompatibilityVersionForTarget(
511517
return floorForArchitecture(llvm::VersionTuple(5, 5));
512518
return floorForArchitecture(llvm::VersionTuple(5, 6));
513519
} else if (Major <= 16) {
514-
return floorForArchitecture(llvm::VersionTuple(5, 7));
520+
if (Minor <= 3)
521+
return floorForArchitecture(llvm::VersionTuple(5, 7));
522+
return floorForArchitecture(llvm::VersionTuple(5, 8));
523+
} else if (Major <= 17) {
524+
if (Minor <= 3)
525+
return floorForArchitecture(llvm::VersionTuple(5, 9));
526+
return floorForArchitecture(llvm::VersionTuple(5, 10));
515527
}
516528
} else if (Triple.isWatchOS()) {
517529
llvm::VersionTuple OSVersion = Triple.getWatchOSVersion();
@@ -542,11 +554,25 @@ swift::getSwiftRuntimeCompatibilityVersionForTarget(
542554
return floorFor64bits(llvm::VersionTuple(5, 5));
543555
return floorFor64bits(llvm::VersionTuple(5, 6));
544556
} else if (Major <= 9) {
545-
return floorFor64bits(llvm::VersionTuple(5, 7));
557+
if (Minor <= 3)
558+
return floorFor64bits(llvm::VersionTuple(5, 7));
559+
return floorFor64bits(llvm::VersionTuple(5, 8));
560+
} else if (Major <= 10) {
561+
if (Minor <= 3)
562+
return floorFor64bits(llvm::VersionTuple(5, 9));
563+
return floorFor64bits(llvm::VersionTuple(5, 10));
546564
}
547565
}
548566
else if (Triple.isXROS()) {
549-
return std::nullopt;
567+
llvm::VersionTuple OSVersion = Triple.getOSVersion();
568+
unsigned Major = OSVersion.getMajor();
569+
unsigned Minor = OSVersion.getMinor().value_or(0);
570+
571+
if (Major <= 1) {
572+
if (Minor <= 0)
573+
return llvm::VersionTuple(5, 9);
574+
return llvm::VersionTuple(5, 10);
575+
}
550576
}
551577

552578
return std::nullopt;
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// RUN: %target-swift-frontend -emit-ir -target %target-cpu-apple-macos99.99 %s | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-PRESENT %s
2+
// RUN: %target-swift-frontend -emit-ir -target %target-cpu-apple-macos14.4 %s | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-SUPPRESSED %s
3+
4+
// REQUIRES: OS=macosx
5+
// UNSUPPORTED: CPU=arm64e
6+
7+
public struct MyStruct {
8+
let fn: @isolated(any) () -> ()
9+
}
10+
11+
// Make sure that we only emit a demangling-based type description
12+
// for @isolated(any) types when deploying to runtimes that support it.
13+
// If we don't, we fall back on using a type metadata accessor, which
14+
// is fine. Since this is for reflective metadata, we could go a step
15+
// further if we decide we really only care about layout equivalence for
16+
// these; if so, we could just suppress the @isolated(any) part of the
17+
// type completely, since it has the the same external layout as an
18+
// ordinary function type.
19+
// rdar://129861211
20+
21+
// CHECK-LABEL: @"$s32reflection_metadata_isolated_any8MyStructVMF" = internal constant
22+
// CHECK-PRESENT-SAME: ptr @"symbolic yyYAc"
23+
// CHECK-SUPPRESSED-SAME: ptr @"get_type_metadata yyYAc.1"

0 commit comments

Comments
 (0)