llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-driver Author: Cyndy Ishida (cyndyishida) <details> <summary>Changes</summary> * Canonicalize driverkit26 to 27 in availability & deployment versioning. * Make darwin27 and later map 1:1 to the same macOS major version. --- Full diff: https://github.com/llvm/llvm-project/pull/202690.diff 5 Files Affected: - (modified) clang/include/clang/Basic/Attr.td (+2) - (added) clang/test/Driver/driverkit26-boundary.c (+12) - (added) clang/test/Driver/simple-darwin.c (+5) - (modified) llvm/lib/TargetParser/Triple.cpp (+11-2) - (modified) llvm/unittests/TargetParser/TripleTest.cpp (+23) ``````````diff diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td index 7af72333d651c..d98f8565b4102 100644 --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -1162,6 +1162,7 @@ static llvm::StringRef canonicalizePlatformName(llvm::StringRef Platform) { .Case("macosx", "macos") .Case("tvOS", "tvos") .Case("watchOS", "watchos") + .Case("DriverKit", "driverkit") .Case("iOSApplicationExtension", "ios_app_extension") .Case("macOSApplicationExtension", "macos_app_extension") .Case("tvOSApplicationExtension", "tvos_app_extension") @@ -1238,6 +1239,7 @@ static llvm::Triple::OSType getOSType(llvm::StringRef Platform) { .Case("tvos", OSType::TvOS) .Case("watchos", OSType::WatchOS) .Case("bridgeos", OSType::BridgeOS) + .Case("driverkit", OSType::DriverKit) .Case("ios_app_extension", OSType::IOS) .Case("maccatalyst_app_extension", OSType::IOS) .Case("macos_app_extension", OSType::MacOSX) diff --git a/clang/test/Driver/driverkit26-boundary.c b/clang/test/Driver/driverkit26-boundary.c new file mode 100644 index 0000000000000..0bdb10d1e0a4e --- /dev/null +++ b/clang/test/Driver/driverkit26-boundary.c @@ -0,0 +1,12 @@ +// Verify that implicit conversions of DriverKit26 map to DriverKit27. + +// RUN: rm -rf %t +// RUN: %clang -target arm64-apple-driverkit26 %s -fsyntax-only 2>&1 | FileCheck %s + +// CHECK: overriding deployment version from '26' to '27' +// CHECK: 'f0' is deprecated: first deprecated in DriverKit 27.0 + +void f0(int) __attribute__((availability(driverkit,introduced=19.0,deprecated=26.0))); +void test() { + f0(0); +} diff --git a/clang/test/Driver/simple-darwin.c b/clang/test/Driver/simple-darwin.c new file mode 100644 index 0000000000000..56ed89e273e3b --- /dev/null +++ b/clang/test/Driver/simple-darwin.c @@ -0,0 +1,5 @@ +// RUN: %clang -target arm64-apple-darwin27 -fuse-ld= \ +// RUN: -mlinker-version=520 %s -### 2>&1 | FileCheck %s + +// CHECK: "-cc1" "-triple" "arm64-apple-macosx27.0.0" +// CHECK: "-platform_version" "macos" "27.0.0" diff --git a/llvm/lib/TargetParser/Triple.cpp b/llvm/lib/TargetParser/Triple.cpp index c6515425b7eb5..4cca24b52af94 100644 --- a/llvm/lib/TargetParser/Triple.cpp +++ b/llvm/lib/TargetParser/Triple.cpp @@ -1744,9 +1744,12 @@ bool Triple::getMacOSXVersion(VersionTuple &Version) const { } else if (Version.getMajor() < 25) { // darwin20-24 corresponds to macOS 11-15. Version = VersionTuple(11 + Version.getMajor() - 20); - } else { - // darwin25 corresponds with macOS26+. + } else if ((Version.getMajor() == 25) || (Version.getMajor() == 26)) { + // darwin25-26 corresponds to macOS 26-27. Version = VersionTuple(Version.getMajor() + 1); + } else { + // Starting with darwin27, it naturally corresponds to the same macOS + // version. } break; case MacOSX: @@ -2644,6 +2647,12 @@ VersionTuple Triple::getCanonicalVersionForOS(OSType OSKind, return Version.withMajorReplaced(Version.getMajor() + WatchOSRangeBump); break; } + case DriverKit: { + // DriverKit26 is canonicalized to 27. + if (Version.getMajor() == 26U) + return Version.withMajorReplaced(27); + break; + } default: return Version; } diff --git a/llvm/unittests/TargetParser/TripleTest.cpp b/llvm/unittests/TargetParser/TripleTest.cpp index 9ce222b6c9c39..ff090429d74ca 100644 --- a/llvm/unittests/TargetParser/TripleTest.cpp +++ b/llvm/unittests/TargetParser/TripleTest.cpp @@ -2668,11 +2668,30 @@ TEST(TripleTest, getOSVersion) { EXPECT_TRUE(T.isArch64Bit()); EXPECT_EQ(VersionTuple(26, 0), T.getiOSVersion()); + T = Triple("arm64-apple-darwin25"); + EXPECT_TRUE(T.isMacOSX()); + EXPECT_FALSE(T.isiOS()); + EXPECT_FALSE(T.isArch16Bit()); + EXPECT_FALSE(T.isArch32Bit()); + EXPECT_TRUE(T.isArch64Bit()); + T.getMacOSXVersion(Version); + EXPECT_EQ(VersionTuple(26), Version); + T = Triple("x86_64-apple-darwin26"); EXPECT_TRUE(T.isMacOSX()); T.getMacOSXVersion(Version); EXPECT_EQ(VersionTuple(27), Version); + T = Triple("x86_64-apple-darwin27"); + EXPECT_TRUE(T.isMacOSX()); + T.getMacOSXVersion(Version); + EXPECT_EQ(VersionTuple(27), Version); + + T = Triple("x86_64-apple-darwin30"); + EXPECT_TRUE(T.isMacOSX()); + T.getMacOSXVersion(Version); + EXPECT_EQ(VersionTuple(30), Version); + // Check invalid ranges are remapped. T = Triple("arm64-apple-visionos6.0"); EXPECT_FALSE(T.isMacOSX()); @@ -2760,6 +2779,10 @@ TEST(TripleTest, getOSVersion) { Version = T.getDriverKitVersion(); EXPECT_EQ(VersionTuple(19, 0), Version); + T = Triple("arm64-apple-driverkit27"); + Version = T.getDriverKitVersion(); + EXPECT_EQ(VersionTuple(27), Version); + T = Triple("dxil-unknown-shadermodel6.6-pixel"); EXPECT_EQ(Triple::dxil, T.getArch()); EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); `````````` </details> https://github.com/llvm/llvm-project/pull/202690 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
