Skip to content

Commit 0360f68

Browse files
committed
[Apple Silicon] [macCatalyst] Baseline arm64(e) macCatalyst at Swift 5.3/iOS 14.0.
1 parent 7ca2bac commit 0360f68

File tree

5 files changed

+47
-0
lines changed

5 files changed

+47
-0
lines changed

lib/AST/Availability.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,10 @@ AvailabilityContext ASTContext::getSwift50Availability() {
252252
return AvailabilityContext(
253253
VersionRange::allGTE(llvm::VersionTuple(10,14,4)));
254254
} else if (target.isiOS()) {
255+
if (target.isAArch64() &&
256+
(target.isSimulatorEnvironment() || target.isMacCatalystEnvironment()))
257+
return AvailabilityContext::alwaysAvailable();
258+
255259
return AvailabilityContext(
256260
VersionRange::allGTE(llvm::VersionTuple(12,2)));
257261
} else if (target.isWatchOS()) {
@@ -283,6 +287,10 @@ AvailabilityContext ASTContext::getSwift51Availability() {
283287
return AvailabilityContext(
284288
VersionRange::allGTE(llvm::VersionTuple(10,15,0)));
285289
} else if (target.isiOS()) {
290+
if (target.isAArch64() &&
291+
(target.isSimulatorEnvironment() || target.isMacCatalystEnvironment()))
292+
return AvailabilityContext::alwaysAvailable();
293+
286294
return AvailabilityContext(
287295
VersionRange::allGTE(llvm::VersionTuple(13,0,0)));
288296
} else if (target.isWatchOS()) {
@@ -314,6 +322,10 @@ AvailabilityContext ASTContext::getSwift52Availability() {
314322
return AvailabilityContext(
315323
VersionRange::allGTE(llvm::VersionTuple(10, 99, 0)));
316324
} else if (target.isiOS()) {
325+
if (target.isAArch64() &&
326+
(target.isSimulatorEnvironment() || target.isMacCatalystEnvironment()))
327+
return AvailabilityContext::alwaysAvailable();
328+
317329
return AvailabilityContext(
318330
VersionRange::allGTE(llvm::VersionTuple(99, 0, 0)));
319331
} else if (target.isWatchOS()) {
@@ -337,6 +349,10 @@ AvailabilityContext ASTContext::getSwift53Availability() {
337349
return AvailabilityContext(
338350
VersionRange::allGTE(llvm::VersionTuple(10, 99, 0)));
339351
} else if (target.isiOS()) {
352+
if (target.isAArch64() &&
353+
(target.isSimulatorEnvironment() || target.isMacCatalystEnvironment()))
354+
return AvailabilityContext::alwaysAvailable();
355+
340356
return AvailabilityContext(
341357
VersionRange::allGTE(llvm::VersionTuple(99, 0, 0)));
342358
} else if (target.isWatchOS()) {

lib/Basic/Platform.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,13 @@ swift::getSwiftRuntimeCompatibilityVersionForTarget(
402402
}
403403
} else if (Triple.isiOS()) { // includes tvOS
404404
Triple.getiOSVersion(Major, Minor, Micro);
405+
406+
// arm64 simulators and macCatalyst are introduced in iOS 14.0/tvOS 14.0
407+
// with Swift 5.3
408+
if (Triple.isAArch64() && Major <= 14 &&
409+
(Triple.isSimulatorEnvironment() || Triple.isMacCatalystEnvironment()))
410+
return llvm::VersionTuple(5, 3);
411+
405412
if (Major <= 12) {
406413
return llvm::VersionTuple(5, 0);
407414
} else if (Major <= 13) {

lib/Driver/DarwinToolChains.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -591,6 +591,14 @@ toolchains::Darwin::addDeploymentTargetArgs(ArgStringList &Arguments,
591591
if (tripleIsMacCatalystEnvironment(triple)) {
592592
triple.getiOSVersion(major, minor, micro);
593593

594+
// Mac Catalyst on arm was introduced with an iOS deployment target of
595+
// 14.0; the linker doesn't want to see a deployment target before that.
596+
if (major < 14 && triple.isAArch64()) {
597+
major = 14;
598+
minor = 0;
599+
micro = 0;
600+
}
601+
594602
// Mac Catalyst was introduced with an iOS deployment target of 13.0;
595603
// the linker doesn't want to see a deployment target before that.
596604
if (major < 13) {

test/Driver/macabi-environment.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
// IOS12-MACABI-DAG: -rpath [[MACOSX_SDK_STDLIB_PATH]]
3535
// IOS12-MACABI-DAG: -platform_version mac-catalyst 13.0.0 0.0.0
3636

37+
// RUN: %swiftc_driver -driver-print-jobs -target arm64-apple-ios12.0-macabi -sdk %S/../Inputs/clang-importer-sdk %s | %FileCheck -check-prefix=IOS14-MACABI %s
38+
// IOS14-MACABI: -platform_version mac-catalyst 14.0.0 0.0.0
39+
3740
// Test using target-variant to build zippered outputs
3841

3942
// RUN: %swiftc_driver -driver-print-jobs -c -target x86_64-apple-macosx10.14 -target-variant x86_64-apple-ios13.0-macabi %s | %FileCheck -check-prefix=ZIPPERED-VARIANT-OBJECT %s
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// REQUIRES: CPU=arm64,OS=maccatalyst
2+
3+
// Doesn't autolink compatibility library because target OS doesn't need it
4+
// RUN: %target-swift-frontend -target arm64-apple-ios12.0-macabi -emit-ir -parse-stdlib %s | %FileCheck -check-prefix=NO-FORCE-LOAD %s
5+
6+
public func foo() {}
7+
8+
// NO-FORCE-LOAD-NOT: FORCE_LOAD
9+
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibility50"}
10+
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibility51"}
11+
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibility52"}
12+
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibility53"}
13+
// NO-FORCE-LOAD-NOT: !{!"-lswiftCompatibilityDynamicReplacements"}

0 commit comments

Comments
 (0)