[clang] 315d1d0 - [C23] Update user-facing docs for C23
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 10 11:23:44 PDT 2023
Author: Aaron Ballman
Date: 2023-08-10T14:19:41-04:00
New Revision: 315d1d094f7fe3f2a28fb3658f576bea0c33c094
URL: https://github.com/llvm/llvm-project/commit/315d1d094f7fe3f2a28fb3658f576bea0c33c094
DIFF: https://github.com/llvm/llvm-project/commit/315d1d094f7fe3f2a28fb3658f576bea0c33c094.diff
LOG: [C23] Update user-facing docs for C23
This changes some public references of C2x to be C23, corrects standard
citations to use the final paragraph numbers, and adds some information
about differences between C17 and C23 modes.
Added:
Modified:
clang/docs/LanguageExtensions.rst
clang/docs/MatrixTypes.rst
clang/docs/ReleaseNotes.rst
clang/docs/UsersManual.rst
Removed:
################################################################################
diff --git a/clang/docs/LanguageExtensions.rst b/clang/docs/LanguageExtensions.rst
index be80751b40668a..56c277983a7403 100644
--- a/clang/docs/LanguageExtensions.rst
+++ b/clang/docs/LanguageExtensions.rst
@@ -612,7 +612,7 @@ to perform additional operations on certain scalar and vector types.
Let ``T`` be one of the following types:
-* an integer type (as in C2x 6.2.5p19), but excluding enumerated types and _Bool
+* an integer type (as in C23 6.2.5p22), but excluding enumerated types and ``bool``
* the standard floating types float or double
* a half-precision floating point type, if one is supported on the target
* a vector type.
@@ -1462,8 +1462,8 @@ Conditional ``explicit`` __cpp_conditional_explicit C++20
``static operator()`` __cpp_static_call_operator C++23 C++03
-------------------------------------- -------------------------------- ------------- -------------
Designated initializers (N494) C99 C89
-Array & element qualification (N2607) C2x C89
-Attributes (N2335) C2x C89
+Array & element qualification (N2607) C23 C89
+Attributes (N2335) C23 C89
====================================== ================================ ============= =============
Type Trait Primitives
@@ -3669,7 +3669,7 @@ A predefined typedef for the target-specific ``va_list`` type.
A builtin function for the target-specific ``va_start`` function-like macro.
The ``parameter-name`` argument is the name of the parameter preceding the
-ellipsis (``...``) in the function signature. Alternatively, in C2x mode or
+ellipsis (``...``) in the function signature. Alternatively, in C23 mode or
later, it may be the integer literal ``0`` if there is no parameter preceding
the ellipsis. This function initializes the given ``__builtin_va_list`` object.
It is undefined behavior to call this function on an already initialized
diff --git a/clang/docs/MatrixTypes.rst b/clang/docs/MatrixTypes.rst
index 2efebbfad93819..e32e13b73aba61 100644
--- a/clang/docs/MatrixTypes.rst
+++ b/clang/docs/MatrixTypes.rst
@@ -33,7 +33,7 @@ program is ill-formed.
Currently, the element type of a matrix is only permitted to be one of the
following types:
-* an integer type (as in C2x 6.2.5p19), but excluding enumerated types and ``_Bool``
+* an integer type (as in C23 6.2.5p22), but excluding enumerated types and ``bool``
* the standard floating types ``float`` or ``double``
* a half-precision floating point type, if one is supported on the target
@@ -68,7 +68,7 @@ rows and columns are the same and the value's elements can be converted to the
element type of the result type. The result is a matrix where each element is
the converted corresponding element.
-A value of any real type (as in C2x 6.2.5p17) can be converted to a matrix type
+A value of any real type (as in C23 6.2.5p14) can be converted to a matrix type
if it can be converted to the element type of the matrix. The result is a
matrix where all elements are the converted original value.
diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst
index 8d15845625b888..c438db074a19b7 100644
--- a/clang/docs/ReleaseNotes.rst
+++ b/clang/docs/ReleaseNotes.rst
@@ -96,7 +96,7 @@ C Language Changes
constant expressions. This change is more consistent with the behavior of
GCC.
-C2x Feature Support
+C23 Feature Support
^^^^^^^^^^^^^^^^^^^
- Clang now accepts ``-std=c23`` and ``-std=gnu23`` as language standard modes,
and the ``__STDC_VERSION__`` macro now expands to ``202311L`` instead of its
diff --git a/clang/docs/UsersManual.rst b/clang/docs/UsersManual.rst
index a774fd91aa277f..558e205d69c2a3 100644
--- a/clang/docs/UsersManual.rst
+++ b/clang/docs/UsersManual.rst
@@ -3172,7 +3172,7 @@ Differences between various standard modes
clang supports the -std option, which changes what language mode clang uses.
The supported modes for C are c89, gnu89, c94, c99, gnu99, c11, gnu11, c17,
-gnu17, c2x, gnu2x, and various aliases for those modes. If no -std option is
+gnu17, c23, gnu23, and various aliases for those modes. If no -std option is
specified, clang defaults to gnu17 mode. Many C99 and C11 features are
supported in earlier modes as a conforming extension, with a warning. Use
``-pedantic-errors`` to request an error if a feature from a later standard
@@ -3224,6 +3224,19 @@ Differences between ``*11`` and ``*17`` modes:
- ``__STDC_VERSION__`` is defined to ``201710L`` rather than ``201112L``.
+Differences between ``*17`` and ``*23`` modes:
+
+- ``__STDC_VERSION__`` is defined to ``202311L`` rather than ``201710L``.
+- ``nullptr`` and ``nullptr_t`` are supported, only in ``*23`` mode.
+- ``ATOMIC_VAR_INIT`` is removed from ``*23`` mode.
+- ``bool``, ``true``, ``false``, ``alignas``, ``alignof``, ``static_assert``,
+ and ``thread_local` are now first-class keywords, only in ``*23`` mode.
+- ``typeof`` and ``typeof_unqual`` are supported, only ``*23`` mode.
+- Bit-precise integers (``_BitInt(N)``) are supported by default in ``*23``
+ mode, and as an extension in ``*17`` and earlier modes.
+- ``[[]]`` attributes are supported by default in ``*23`` mode, and as an
+ extension in ``*17`` and earlier modes.
+
GCC extensions not implemented yet
----------------------------------
More information about the cfe-commits
mailing list