[clang] [clang] Alias iso9899:2024 to C23, update documentation (PR #138459)
via cfe-commits
cfe-commits at lists.llvm.org
Sun May 4 09:49:10 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Raul Tambre (tambry)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/138459.diff
4 Files Affected:
- (modified) clang/docs/CommandGuide/clang.rst (+9)
- (modified) clang/docs/ReleaseNotes.rst (+1)
- (modified) clang/include/clang/Basic/LangStandards.def (+3-4)
- (modified) clang/test/Driver/unknown-std.c (+2-3)
``````````diff
diff --git a/clang/docs/CommandGuide/clang.rst b/clang/docs/CommandGuide/clang.rst
index 42aac7b25d93c..e3399d39bf00c 100644
--- a/clang/docs/CommandGuide/clang.rst
+++ b/clang/docs/CommandGuide/clang.rst
@@ -146,6 +146,15 @@ Language Selection and Mode Options
ISO C 2017 with GNU extensions
+ | ``c23``
+ | ``iso9899:2024``
+
+ ISO C 2023
+
+ | ``gnu23``
+
+ ISO C 2023 with GNU extensions
+
The default C language standard is ``gnu17``, except on PS4, where it is
``gnu99``.
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 918ff952bb2c3..52ef686841c04 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -241,6 +241,7 @@ C2y Feature Support
C23 Feature Support
^^^^^^^^^^^^^^^^^^^
+- Clang now accepts ``-std=iso9899:2024`` as an alias for C23.
- Added ``__builtin_c23_va_start()`` for compatibility with GCC and to enable
better diagnostic behavior for the ``va_start()`` macro in C23 and later.
This also updates the definition of ``va_start()`` in ``<stdarg.h>`` to use
diff --git a/clang/include/clang/Basic/LangStandards.def b/clang/include/clang/Basic/LangStandards.def
index 982a79873adb5..49cd9881829d4 100644
--- a/clang/include/clang/Basic/LangStandards.def
+++ b/clang/include/clang/Basic/LangStandards.def
@@ -89,15 +89,14 @@ LANGSTANDARD_ALIAS(gnu17, "gnu18")
// C23 modes
LANGSTANDARD(c23, "c23",
- C, "Working Draft for ISO C23",
+ C, "ISO C 2023",
LineComment | C99 | C11 | C17 | C23 | Digraphs | HexFloat)
+LANGSTANDARD_ALIAS(c23, "iso9899:2024")
LANGSTANDARD_ALIAS_DEPR(c23, "c2x")
LANGSTANDARD(gnu23, "gnu23",
- C, "Working Draft for ISO C23 with GNU extensions",
+ C, "ISO C 2023 with GNU extensions",
LineComment | C99 | C11 | C17 | C23 | Digraphs | GNUMode | HexFloat)
LANGSTANDARD_ALIAS_DEPR(gnu23, "gnu2x")
-// FIXME: Add the alias for iso9899:202* once we know the year ISO publishes
-// the document (expected to be 2024).
// C2y modes
LANGSTANDARD(c2y, "c2y",
diff --git a/clang/test/Driver/unknown-std.c b/clang/test/Driver/unknown-std.c
index 332d587ddd4a1..539b04f69b9ae 100644
--- a/clang/test/Driver/unknown-std.c
+++ b/clang/test/Driver/unknown-std.c
@@ -15,11 +15,10 @@
// CHECK-NEXT: note: use 'gnu11' for 'ISO C 2011 with GNU extensions' standard
// CHECK-NEXT: note: use 'c17', 'iso9899:2017', 'c18', or 'iso9899:2018' for 'ISO C 2017' standard
// CHECK-NEXT: note: use 'gnu17' or 'gnu18' for 'ISO C 2017 with GNU extensions' standard
-// CHECK-NEXT: note: use 'c23' for 'Working Draft for ISO C23' standard
-// CHECK-NEXT: note: use 'gnu23' for 'Working Draft for ISO C23 with GNU extensions' standard
+// CHECK-NEXT: note: use 'c23' or 'iso9899:2024' for 'ISO C 2023' standard
+// CHECK-NEXT: note: use 'gnu23' for 'ISO C 2023 with GNU extensions' standard
// CHECK-NEXT: note: use 'c2y' for 'Working Draft for ISO C2y' standard
// CHECK-NEXT: note: use 'gnu2y' for 'Working Draft for ISO C2y with GNU extensions' standard
// Make sure that no other output is present.
// CHECK-NOT: {{^.+$}}
-
``````````
</details>
https://github.com/llvm/llvm-project/pull/138459
More information about the cfe-commits
mailing list