[clang] [llvm] [clang][Darwin] Align all OS Versions for 26 (PR #143548)
https://github.com/cyndyishida edited https://github.com/llvm/llvm-project/pull/143548 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [clang][Darwin] Align all OS Versions for 26 (PR #143548)
@@ -17,7 +17,7 @@ void a(void) __attribute__((availability(macos, introduced=12.0))); // A-NEXT: ] // RUN: FileCheck %s --input-file %t/output.symbols.json --check-prefix B -void b(void) __attribute__((availability(macos, introduced=11.0, deprecated=12.0, obsoleted=20.0))); +void b(void) __attribute__((availability(macos, introduced=11.0, deprecated=12.0, obsoleted=30.0))); cyndyishida wrote: I'm not sure. I just incremented it by the same value to avoid a warning on an invalid range. https://github.com/llvm/llvm-project/pull/143548 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [clang][Darwin] Align all OS Versions for 26 (PR #143548)
https://github.com/cyndyishida closed https://github.com/llvm/llvm-project/pull/143548 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [clang][Darwin] Align all OS Versions for 26 (PR #143548)
https://github.com/cooperp approved this pull request. https://github.com/llvm/llvm-project/pull/143548 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [clang][Darwin] Align all OS Versions for 26 (PR #143548)
https://github.com/JDevlieghere approved this pull request. LGTM https://github.com/llvm/llvm-project/pull/143548 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [clang][Darwin] Align all OS Versions for 26 (PR #143548)
llvmbot wrote:
@llvm/pr-subscribers-clang
Author: Cyndy Ishida (cyndyishida)
Changes
* Translate the following versions to 26.
* watchOS 12 -> 26
* visionOS 3 -> 26
* macos 16 -> 26
* iOS 19 -> 26
* tvOS 19 -> 26
* Emit diagnostics, but allow conversion when clients attempt to use invalid
gaps in OS versioning in availability.
* For target-triples, only allow "valid" versions for implicit conversions.
---
Patch is 43.62 KiB, truncated to 20.00 KiB below, full version:
https://github.com/llvm/llvm-project/pull/143548.diff
21 Files Affected:
- (modified) clang/include/clang/Basic/Attr.td (+22)
- (modified) clang/include/clang/Basic/DiagnosticSemaKinds.td (+3)
- (modified) clang/lib/Driver/ToolChains/Darwin.cpp (+15-2)
- (modified) clang/lib/Sema/SemaDeclAttr.cpp (+33-2)
- (modified) clang/lib/Sema/SemaExprObjC.cpp (+8-3)
- (added) clang/test/CodeGen/attr-availability-aligned-versions.c (+28)
- (modified) clang/test/Driver/darwin-infer-simulator-sdkroot.c (+2-2)
- (added) clang/test/Driver/darwin-invalid-os-versions.c (+22)
- (modified) clang/test/Driver/darwin-ld-platform-version-macos.c (+5)
- (modified) clang/test/Driver/darwin-ld-platform-version-watchos.c (+48)
- (modified) clang/test/ExtractAPI/availability.c (+4-4)
- (modified) clang/test/ExtractAPI/inherited_availability.m (+8-8)
- (added) clang/test/Sema/Inputs/XROS.sdk/SDKSettings.json (+9)
- (added) clang/test/Sema/attr-availability-invalid-os-versions.c (+35)
- (added) clang/test/Sema/attr-availability-ios-aligned-versions.c (+116)
- (added) clang/test/Sema/attr-availability-ios-fallback-aligned-versions.c
(+32)
- (modified) clang/test/Sema/attr-availability-iosmac-infer-from-macos.c (+1-1)
- (modified) llvm/include/llvm/TargetParser/Triple.h (+5-1)
- (modified) llvm/lib/TargetParser/Triple.cpp (+107-13)
- (modified) llvm/lib/TextAPI/Platform.cpp (+3-1)
- (modified) llvm/unittests/TargetParser/TripleTest.cpp (+142-4)
``diff
diff --git a/clang/include/clang/Basic/Attr.td
b/clang/include/clang/Basic/Attr.td
index f889e41c8699f..bd07bb1361a85 100644
--- a/clang/include/clang/Basic/Attr.td
+++ b/clang/include/clang/Basic/Attr.td
@@ -,6 +,8 @@ static llvm::StringRef
canonicalizePlatformName(llvm::StringRef Platform) {
return llvm::StringSwitch(Platform)
.Case("iOS", "ios")
.Case("macOS", "macos")
+ .Case("macOSX", "macos")
+ .Case("macosx", "macos")
.Case("tvOS", "tvos")
.Case("watchOS", "watchos")
.Case("iOSApplicationExtension", "ios_app_extension")
@@ -1175,6 +1177,26 @@ static llvm::Triple::EnvironmentType
getEnvironmentType(llvm::StringRef Environm
.Case("library", llvm::Triple::Library)
.Default(llvm::Triple::UnknownEnvironment);
}
+
+static llvm::Triple::OSType getOSType(llvm::StringRef Platform) {
+using OSType = llvm::Triple::OSType;
+return llvm::StringSwitch(Platform)
+ .Case("ios", OSType::IOS)
+ .Case("macos", OSType::MacOSX)
+ .Case("maccatalyst", OSType::IOS)
+ .Case("tvos", OSType::TvOS)
+ .Case("watchos", OSType::WatchOS)
+ .Case("bridgeos", OSType::BridgeOS)
+ .Case("ios_app_extension", OSType::IOS)
+ .Case("maccatalyst_app_extension", OSType::IOS)
+ .Case("macos_app_extension", OSType::MacOSX)
+ .Case("tvos_app_extension", OSType::TvOS)
+ .Case("watchos_app_extension", OSType::WatchOS)
+ .Case("xros", OSType::XROS)
+ .Case("xros_app_extension", OSType::XROS)
+ .Default(OSType::UnknownOS);
+}
+
}];
let HasCustomParsing = 1;
let InheritEvenIfAlreadyPresent = 1;
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td
b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 1f283b776a02c..0f77083dac9df 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -4063,6 +4063,9 @@ def warn_at_available_unchecked_use : Warning<
"%select{@available|__builtin_available}0 does not guard availability here; "
"use if (%select{@available|__builtin_available}0) instead">,
InGroup>;
+def warn_availability_invalid_os_version
+: Warning<"invalid %1 version '%0' in availability attribute">,
InGroup>;
+def note_availability_invalid_os_version_adjusted: Note<"implicitly treating
version as '%0'">;
def warn_missing_sdksettings_for_availability_checking : Warning<
"%0 availability is ignored without a valid 'SDKSettings.json' in the SDK">,
diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp
b/clang/lib/Driver/ToolChains/Darwin.cpp
index 59f423b633464..e987ef78920e8 100644
--- a/clang/lib/Driver/ToolChains/Darwin.cpp
+++ b/clang/lib/Driver/ToolChains/Darwin.cpp
@@ -1721,10 +1721,14 @@ struct DarwinPlatform {
UnderlyingOSVersion.reset();
return Result;
}
+ bool isValidOSVersion()
[clang] [llvm] [clang][Darwin] Align all OS Versions for 26 (PR #143548)
https://github.com/cyndyishida created
https://github.com/llvm/llvm-project/pull/143548
* Translate the following versions to 26.
* watchOS 12 -> 26
* visionOS 3 -> 26
* macos 16 -> 26
* iOS 19 -> 26
* tvOS 19 -> 26
* Emit diagnostics, but allow conversion when clients attempt to use invalid
gaps in OS versioning in availability.
* For target-triples, only allow "valid" versions for implicit conversions.
>From 290258a09ed66fa53b49b086a36bb1b4ccb6d00c Mon Sep 17 00:00:00 2001
From: Cyndy Ishida
Date: Mon, 9 Jun 2025 19:42:33 -0700
Subject: [PATCH] [clang][Darwin] Align all OS Versions for 26
* Translate the following versions to 26.
* watchOS 12 -> 26
* visionOS 3 -> 26
* macos 16 -> 26
* iOS 19 -> 26
* tvOS 19 -> 26
* Emit diagnostics, but allow conversion when clients attempt to use invalid
gaps in
OS versioning in availability.
* For target-triples, only allow "valid" versions for implicit
conversions.
---
clang/include/clang/Basic/Attr.td | 22 +++
.../clang/Basic/DiagnosticSemaKinds.td| 3 +
clang/lib/Driver/ToolChains/Darwin.cpp| 17 +-
clang/lib/Sema/SemaDeclAttr.cpp | 35 -
clang/lib/Sema/SemaExprObjC.cpp | 11 +-
.../attr-availability-aligned-versions.c | 28
.../Driver/darwin-infer-simulator-sdkroot.c | 4 +-
.../test/Driver/darwin-invalid-os-versions.c | 22 +++
.../Driver/darwin-ld-platform-version-macos.c | 5 +
.../darwin-ld-platform-version-watchos.c | 48 ++
clang/test/ExtractAPI/availability.c | 8 +-
.../test/ExtractAPI/inherited_availability.m | 16 +-
.../Sema/Inputs/XROS.sdk/SDKSettings.json | 9 ++
.../attr-availability-invalid-os-versions.c | 35 +
.../attr-availability-ios-aligned-versions.c | 116 ++
...ailability-ios-fallback-aligned-versions.c | 32
...ttr-availability-iosmac-infer-from-macos.c | 2 +-
llvm/include/llvm/TargetParser/Triple.h | 6 +-
llvm/lib/TargetParser/Triple.cpp | 120 --
llvm/lib/TextAPI/Platform.cpp | 4 +-
llvm/unittests/TargetParser/TripleTest.cpp| 146 +-
21 files changed, 648 insertions(+), 41 deletions(-)
create mode 100644 clang/test/CodeGen/attr-availability-aligned-versions.c
create mode 100644 clang/test/Driver/darwin-invalid-os-versions.c
create mode 100644 clang/test/Sema/Inputs/XROS.sdk/SDKSettings.json
create mode 100644 clang/test/Sema/attr-availability-invalid-os-versions.c
create mode 100644 clang/test/Sema/attr-availability-ios-aligned-versions.c
create mode 100644
clang/test/Sema/attr-availability-ios-fallback-aligned-versions.c
diff --git a/clang/include/clang/Basic/Attr.td
b/clang/include/clang/Basic/Attr.td
index f889e41c8699f..bd07bb1361a85 100644
--- a/clang/include/clang/Basic/Attr.td
+++ b/clang/include/clang/Basic/Attr.td
@@ -,6 +,8 @@ static llvm::StringRef
canonicalizePlatformName(llvm::StringRef Platform) {
return llvm::StringSwitch(Platform)
.Case("iOS", "ios")
.Case("macOS", "macos")
+ .Case("macOSX", "macos")
+ .Case("macosx", "macos")
.Case("tvOS", "tvos")
.Case("watchOS", "watchos")
.Case("iOSApplicationExtension", "ios_app_extension")
@@ -1175,6 +1177,26 @@ static llvm::Triple::EnvironmentType
getEnvironmentType(llvm::StringRef Environm
.Case("library", llvm::Triple::Library)
.Default(llvm::Triple::UnknownEnvironment);
}
+
+static llvm::Triple::OSType getOSType(llvm::StringRef Platform) {
+using OSType = llvm::Triple::OSType;
+return llvm::StringSwitch(Platform)
+ .Case("ios", OSType::IOS)
+ .Case("macos", OSType::MacOSX)
+ .Case("maccatalyst", OSType::IOS)
+ .Case("tvos", OSType::TvOS)
+ .Case("watchos", OSType::WatchOS)
+ .Case("bridgeos", OSType::BridgeOS)
+ .Case("ios_app_extension", OSType::IOS)
+ .Case("maccatalyst_app_extension", OSType::IOS)
+ .Case("macos_app_extension", OSType::MacOSX)
+ .Case("tvos_app_extension", OSType::TvOS)
+ .Case("watchos_app_extension", OSType::WatchOS)
+ .Case("xros", OSType::XROS)
+ .Case("xros_app_extension", OSType::XROS)
+ .Default(OSType::UnknownOS);
+}
+
}];
let HasCustomParsing = 1;
let InheritEvenIfAlreadyPresent = 1;
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td
b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 1f283b776a02c..0f77083dac9df 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -4063,6 +4063,9 @@ def warn_at_available_unchecked_use : Warning<
"%select{@available|__builtin_available}0 does not guard availability here; "
"use if (%select{@available|__builtin_available}0) instead">,
InGroup>;
+def warn_avai
