Skip to content

Commit 710ba14

Browse files
committed
[Apple Silicon] [Platform] Baseline arm64 simulators at iOS/tvOS 14.0 and watchOS 7.0.
1 parent a930b51 commit 710ba14

File tree

3 files changed

+36
-9
lines changed

3 files changed

+36
-9
lines changed

lib/AST/Availability.cpp

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -324,25 +324,27 @@ AvailabilityContext ASTContext::getSwift52Availability() {
324324
if (target.getArchName() == "arm64e")
325325
return AvailabilityContext::alwaysAvailable();
326326

327-
if (target.isMacOSX() ) {
327+
if (target.isMacOSX()) {
328328
if (target.isAArch64())
329329
return AvailabilityContext::alwaysAvailable();
330330

331331
return AvailabilityContext(
332-
VersionRange::allGTE(llvm::VersionTuple(10, 99, 0)));
332+
VersionRange::allGTE(llvm::VersionTuple(10, 15, 4)));
333333
} else if (target.isiOS()) {
334334
if (target.isAArch64() &&
335335
(target.isSimulatorEnvironment() || target.isMacCatalystEnvironment()))
336336
return AvailabilityContext::alwaysAvailable();
337337

338338
return AvailabilityContext(
339-
VersionRange::allGTE(llvm::VersionTuple(99, 0, 0)));
339+
VersionRange::allGTE(llvm::VersionTuple(13, 4, 0)));
340340
} else if (target.isWatchOS()) {
341+
if (target.isArch64Bit())
342+
return AvailabilityContext::alwaysAvailable();
343+
341344
return AvailabilityContext(
342-
VersionRange::allGTE(llvm::VersionTuple(9, 99, 0)));
343-
} else {
344-
return AvailabilityContext::alwaysAvailable();
345+
VersionRange::allGTE(llvm::VersionTuple(6, 2, 0)));
345346
}
347+
return AvailabilityContext::alwaysAvailable();
346348
}
347349

348350
AvailabilityContext ASTContext::getSwift53Availability() {
@@ -355,18 +357,24 @@ AvailabilityContext ASTContext::getSwift53Availability() {
355357
if (target.isAArch64())
356358
return AvailabilityContext::alwaysAvailable();
357359

360+
llvm::VersionTuple macOVersion53(10, 16, 0);
361+
macOVersion53 = canonicalizePlatformVersion(PlatformKind::OSX, macOVersion53);
358362
return AvailabilityContext(
359-
VersionRange::allGTE(llvm::VersionTuple(10, 99, 0)));
363+
VersionRange::allGTE(llvm::VersionTuple(10, 16, 0)));
364+
VersionRange::allGTE(macOVersion53));
360365
} else if (target.isiOS()) {
361366
if (target.isAArch64() &&
362367
(target.isSimulatorEnvironment() || target.isMacCatalystEnvironment()))
363368
return AvailabilityContext::alwaysAvailable();
364369

365370
return AvailabilityContext(
366-
VersionRange::allGTE(llvm::VersionTuple(99, 0, 0)));
371+
VersionRange::allGTE(llvm::VersionTuple(14, 0, 0)));
367372
} else if (target.isWatchOS()) {
373+
if (target.isArch64Bit())
374+
return AvailabilityContext::alwaysAvailable();
375+
368376
return AvailabilityContext(
369-
VersionRange::allGTE(llvm::VersionTuple(9, 99, 0)));
377+
VersionRange::allGTE(llvm::VersionTuple(7, 0, 0)));
370378
} else {
371379
return AvailabilityContext::alwaysAvailable();
372380
}

lib/Driver/DarwinToolChains.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,16 @@ toolchains::Darwin::addDeploymentTargetArgs(ArgStringList &Arguments,
632632
case DarwinPlatformKind::TvOS:
633633
case DarwinPlatformKind::TvOSSimulator:
634634
triple.getiOSVersion(major, minor, micro);
635+
636+
// The first deployment of arm64 simulators is iOS/tvOS 14.0;
637+
// the linker doesn't want to see a deployment target before that.
638+
if (triple.isSimulatorEnvironment() && triple.isAArch64() &&
639+
major < 14) {
640+
major = 14;
641+
minor = 0;
642+
micro = 0;
643+
}
644+
635645
break;
636646
case DarwinPlatformKind::WatchOS:
637647
case DarwinPlatformKind::WatchOSSimulator:

test/Driver/linker.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,22 @@
113113
// RUN: %swiftc_driver -sdk "" -driver-print-jobs -target x86_64-apple-macosx11.0 %s 2>&1 | %FileCheck -check-prefix X86_MACOS11_LINKER %s
114114
// RUN: %swiftc_driver -sdk "" -driver-print-jobs -target arm64-apple-macosx11.0 %s 2>&1 | %FileCheck -check-prefix ARM64E_MACOS_LINKER %s
115115

116+
// Check arm64 simulators first deployment version adjustment.
117+
// RUN: %swiftc_driver -sdk "" -driver-print-jobs -target arm64-apple-ios13.0-simulator %s 2>&1 | %FileCheck -check-prefix ARM64_IOS_SIMULATOR_LINKER %s
118+
// RUN: %swiftc_driver -sdk "" -driver-print-jobs -target arm64-apple-tvos13.0-simulator %s 2>&1 | %FileCheck -check-prefix ARM64_TVOS_SIMULATOR_LINKER %s
119+
// RUN: %swiftc_driver -sdk "" -driver-print-jobs -target arm64-apple-watchos5.0-simulator %s 2>&1 | %FileCheck -check-prefix ARM64_WATCHOS_SIMULATOR_LINKER %s
120+
121+
116122
// MACOS_10_15: -platform_version macos 10.9.0 10.15.0
117123
// MACOS_10_15_4: -platform_version macos 10.9.0 10.15.4
118124
// MACOS_UNVERSIONED: -platform_version macos 10.9.0 0.0.0
119125

120126
// ARM64E_MACOS_LINKER: -platform_version macos 11.0.0
121127
// X86_MACOS11_LINKER: -platform_version macos 10.16.0
122128
// X86_64_WATCHOS_SIM_LINKER: -platform_version watchos-simulator 7.0.0
129+
// ARM64_IOS_SIMULATOR_LINKER: -platform_version ios-simulator 14.0.0
130+
// ARM64_TVOS_SIMULATOR_LINKER: -platform_version tvos-simulator 14.0.0
131+
// ARM64_WATCHOS_SIMULATOR_LINKER: -platform_version watchos-simulator 7.0.0
123132

124133
// There are more RUN lines further down in the file.
125134

0 commit comments

Comments
 (0)