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 ---------------------------------- _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits