Skip to content

Commit 16110be

Browse files
committed
[Apple Silicon] Baseline arm64 macOS at Swift 5.3 / macOS 10.16
1 parent 76c5fac commit 16110be

File tree

5 files changed

+39
-0
lines changed

5 files changed

+39
-0
lines changed

lib/AST/Availability.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,9 @@ AvailabilityContext ASTContext::getSwift50Availability() {
246246
return AvailabilityContext::alwaysAvailable();
247247

248248
if (target.isMacOSX()) {
249+
if (target.isAArch64())
250+
return AvailabilityContext::alwaysAvailable();
251+
249252
return AvailabilityContext(
250253
VersionRange::allGTE(llvm::VersionTuple(10,14,4)));
251254
} else if (target.isiOS()) {
@@ -274,6 +277,9 @@ AvailabilityContext ASTContext::getSwift51Availability() {
274277
return AvailabilityContext::alwaysAvailable();
275278

276279
if (target.isMacOSX()) {
280+
if (target.isAArch64())
281+
return AvailabilityContext::alwaysAvailable();
282+
277283
return AvailabilityContext(
278284
VersionRange::allGTE(llvm::VersionTuple(10,15,0)));
279285
} else if (target.isiOS()) {
@@ -302,6 +308,9 @@ AvailabilityContext ASTContext::getSwift52Availability() {
302308
return AvailabilityContext::alwaysAvailable();
303309

304310
if (target.isMacOSX() ) {
311+
if (target.isAArch64())
312+
return AvailabilityContext::alwaysAvailable();
313+
305314
return AvailabilityContext(
306315
VersionRange::allGTE(llvm::VersionTuple(10, 99, 0)));
307316
} else if (target.isiOS()) {
@@ -322,6 +331,9 @@ AvailabilityContext ASTContext::getSwift53Availability() {
322331
return AvailabilityContext::alwaysAvailable();
323332

324333
if (target.isMacOSX() ) {
334+
if (target.isAArch64())
335+
return AvailabilityContext::alwaysAvailable();
336+
325337
return AvailabilityContext(
326338
VersionRange::allGTE(llvm::VersionTuple(10, 99, 0)));
327339
} else if (target.isiOS()) {

lib/Basic/Platform.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,9 @@ swift::getSwiftRuntimeCompatibilityVersionForTarget(
387387
if (Triple.isMacOSX()) {
388388
Triple.getMacOSXVersion(Major, Minor, Micro);
389389
if (Major == 10) {
390+
if (Triple.isAArch64() && Minor <= 16)
391+
return llvm::VersionTuple(5, 3);
392+
390393
if (Minor <= 14) {
391394
return llvm::VersionTuple(5, 0);
392395
} else if (Minor <= 15) {

lib/Driver/DarwinToolChains.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -602,6 +602,14 @@ toolchains::Darwin::addDeploymentTargetArgs(ArgStringList &Arguments,
602602
switch (getDarwinPlatformKind((triple))) {
603603
case DarwinPlatformKind::MacOS:
604604
triple.getMacOSXVersion(major, minor, micro);
605+
606+
// The first deployment of arm64 for macOS is version 10.16;
607+
if (triple.isAArch64() && major <= 10 && minor < 16) {
608+
major = 10;
609+
minor = 16;
610+
micro = 0;
611+
}
612+
605613
break;
606614
case DarwinPlatformKind::IPhoneOS:
607615
case DarwinPlatformKind::IPhoneOSSimulator:

test/Driver/linker.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@
106106
// RUN: %swiftc_driver -driver-print-jobs -target x86_64-apple-macosx10.9 -sdk %S/Inputs/MacOSX10.15.4.versioned.sdk %s 2>&1 | %FileCheck -check-prefix MACOS_10_15_4 %s
107107
// RUN: %swiftc_driver -driver-print-jobs -target x86_64-apple-macosx10.9 -sdk %S/Inputs/MacOSX10.15.sdk %s 2>&1 | %FileCheck -check-prefix MACOS_UNVERSIONED %s
108108

109+
// Check arm64 macOS first deployment version adjustment.
110+
// RUN: %swiftc_driver -driver-print-jobs -target arm64-apple-macosx10.15.1 %s 2>&1 | %FileCheck -check-prefix ARM64E_MACOS_LINKER %s
111+
109112
// MACOS_10_15: -platform_version macos 10.9.0 10.15.0
110113
// MACOS_10_15_4: -platform_version macos 10.9.0 10.15.4
111114
// MACOS_UNVERSIONED: -platform_version macos 10.9.0 0.0.0
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// REQUIRES: CPU=arm64,OS=macosx
2+
3+
// Doesn't autolink compatibility library because target OS doesn't need it
4+
// RUN: %target-swift-frontend -target arm64-apple-macosx10.14 -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)