Skip to content

[clang] Alias iso9899:2024 to C23, update documentation #138459

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
May 5, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions clang/docs/CommandGuide/clang.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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``.

Expand Down
1 change: 1 addition & 0 deletions clang/docs/ReleaseNotes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 3 additions & 4 deletions clang/include/clang/Basic/LangStandards.def
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
5 changes: 2 additions & 3 deletions clang/test/Driver/unknown-std.c
Original file line number Diff line number Diff line change
Expand Up @@ -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: {{^.+$}}