Add references to C23 subclauses to the documentation of implementation-defined behavior, and new entries for implementation-defined behavior new in C23; change some references in the text to e.g. "C99 and C11" to encompass C23 as well.
Tested with "make info html pdf". * doc/implement-c.texi: Document C23 implementation-defined behavior. (Constant expressions implementation, Types implementation): New nodes. diff --git a/gcc/doc/implement-c.texi b/gcc/doc/implement-c.texi index a942a127cc7f..bdfb6342f0df 100644 --- a/gcc/doc/implement-c.texi +++ b/gcc/doc/implement-c.texi @@ -10,8 +10,8 @@ A conforming implementation of ISO C is required to document its choice of behavior in each of the areas that are designated ``implementation defined''. The following lists all such areas, along with the section numbers from the ISO/IEC 9899:1990, ISO/IEC -9899:1999 and ISO/IEC 9899:2011 standards. Some areas are only -implementation-defined in one version of the standard. +9899:1999, ISO/IEC 9899:2011 and ISO/IEC 9899:2024 standards. Some +areas are only implementation-defined in one version of the standard. Some choices depend on the externally determined ABI for the platform (including standard character encodings) which GCC follows; these are @@ -47,15 +47,15 @@ a freestanding environment); refer to their documentation for details. @itemize @bullet @item -@cite{How a diagnostic is identified (C90 3.7, C99 and C11 3.10, C90, -C99 and C11 5.1.1.3).} +@cite{How a diagnostic is identified (C90 3.7, C99 and C11 3.10, C23 +3.13, C90, C99 and C11 5.1.1.3, C23 5.2.1.3).} Diagnostics consist of all the output sent to stderr by GCC@. @item @cite{Whether each nonempty sequence of white-space characters other than new-line is retained or replaced by one space character in translation -phase 3 (C90, C99 and C11 5.1.1.2).} +phase 3 (C90, C99 and C11 5.1.1.2, C23 5.2.1.2).} @xref{Implementation-defined behavior, , Implementation-defined behavior, cpp, The C Preprocessor}. @@ -72,7 +72,7 @@ of the C library, and are not defined by GCC itself. @item @cite{The mapping between physical source file multibyte characters and the source character set in translation phase 1 (C90, C99 and C11 -5.1.1.2).} +5.1.1.2, C23 5.2.1.2).} @xref{Implementation-defined behavior, , Implementation-defined behavior, cpp, The C Preprocessor}. @@ -85,14 +85,16 @@ behavior, cpp, The C Preprocessor}. @itemize @bullet @item @cite{Which additional multibyte characters may appear in identifiers -and their correspondence to universal character names (C99 and C11 6.4.2).} +and their correspondence to universal character names (C99 and C11 +6.4.2, C23 6.4.3).} @xref{Implementation-defined behavior, , Implementation-defined behavior, cpp, The C Preprocessor}. @item @cite{The number of significant initial characters in an identifier -(C90 6.1.2, C90, C99 and C11 5.2.4.1, C99 and C11 6.4.2).} +(C90 6.1.2, C90, C99 and C11 5.2.4.1, C23 5.3.5.2, C99 and C11 6.4.2, +C23 6.4.3).} For internal names, all characters are significant. For external names, the number of significant characters are defined by the linker; for @@ -102,7 +104,7 @@ almost all targets, all characters are significant. @cite{Whether case distinctions are significant in an identifier with external linkage (C90 6.1.2).} -This is a property of the linker. C99 and C11 require that case distinctions +This is a property of the linker. C99 and later require that case distinctions are always significant in identifiers with external linkage and systems without this property are not supported by GCC@. @@ -113,34 +115,35 @@ systems without this property are not supported by GCC@. @itemize @bullet @item -@cite{The number of bits in a byte (C90 3.4, C99 and C11 3.6).} +@cite{The number of bits in a byte (C90 3.4, C99 and C11 3.6, C23 3.7).} Determined by ABI@. @item @cite{The values of the members of the execution character set (C90, -C99 and C11 5.2.1).} +C99 and C11 5.2.1, C23 5.3.1).} Determined by ABI@. @item @cite{The unique value of the member of the execution character set produced for each of the standard alphabetic escape sequences (C90, C99 and C11 -5.2.2).} +5.2.2, C23 5.3.3).} Determined by ABI@. @item @cite{The value of a @code{char} object into which has been stored any character other than a member of the basic execution character set -(C90 6.1.2.5, C99 and C11 6.2.5).} +(C90 6.1.2.5, C99, C11 and C23 6.2.5).} Determined by ABI@. @item @cite{Which of @code{signed char} or @code{unsigned char} has the same range, representation, and behavior as ``plain'' @code{char} (C90 -6.1.2.5, C90 6.2.1.1, C99 and C11 6.2.5, C99 and C11 6.3.1.1).} +6.1.2.5, C90 6.2.1.1, C99, C11 and C23 6.2.5, C99 and C11 6.3.1.1, C23 +6.3.2.1).} @opindex fsigned-char @opindex funsigned-char @@ -148,17 +151,33 @@ Determined by ABI@. The options @option{-funsigned-char} and @option{-fsigned-char} change the default. @xref{C Dialect Options, , Options Controlling C Dialect}. +@item +@cite{The literal encoding, which maps of the characters of the +execution character set to the values in a character constant or +string literal (C23 6.2.9, C23 6.4.5.5).} + +Determined by ABI@. + +@item +@cite{The wide literal encoding, of the characters of the execution +character set to the values in a @code{wchar_t} character constant or +@code{wchar_t} string literal (C23 6.2.9, C23 6.4.5.5).} + +Determined by ABI@. + @item @cite{The mapping of members of the source character set (in character constants and string literals) to members of the execution character -set (C90 6.1.3.4, C99 and C11 6.4.4.4, C90, C99 and C11 5.1.1.2).} +set (C90 6.1.3.4, C99 and C11 6.4.4.4, C23 6.4.5.5, C90, C99 and C11 +5.1.1.2, C23 5.2.1.2).} Determined by ABI@. @item @cite{The value of an integer character constant containing more than one character or containing a character or escape sequence that does not map -to a single-byte execution character (C90 6.1.3.4, C99 and C11 6.4.4.4).} +to a single-byte execution character (C90 6.1.3.4, C99 and C11 +6.4.4.4, C23 6.4.5.5).} @xref{Implementation-defined behavior, , Implementation-defined behavior, cpp, The C Preprocessor}. @@ -169,7 +188,7 @@ multibyte character or a single multibyte character that maps to multiple members of the extended execution character set, or containing a multibyte character or escape sequence not represented in the extended execution character set (C90 6.1.3.4, C99 and C11 -6.4.4.4).} +6.4.4.4, C23 6.4.5.5).} @xref{Implementation-defined behavior, , Implementation-defined behavior, cpp, The C Preprocessor}. @@ -178,7 +197,7 @@ behavior, cpp, The C Preprocessor}. @cite{The current locale used to convert a wide character constant consisting of a single multibyte character that maps to a member of the extended execution character set into a corresponding wide character code (C90 -6.1.3.4, C99 and C11 6.4.4.4).} +6.1.3.4, C99 and C11 6.4.4.4, C23 6.4.5.5).} @xref{Implementation-defined behavior, , Implementation-defined behavior, cpp, The C Preprocessor}. @@ -192,7 +211,7 @@ Such tokens may not be concatenated. @item @cite{The current locale used to convert a wide string literal into -corresponding wide character codes (C90 6.1.4, C99 and C11 6.4.5).} +corresponding wide character codes (C90 6.1.4, C99 and C11 6.4.5, C23 6.4.6).} @xref{Implementation-defined behavior, , Implementation-defined behavior, cpp, The C Preprocessor}. @@ -200,7 +219,7 @@ behavior, cpp, The C Preprocessor}. @item @cite{The value of a string literal containing a multibyte character or escape sequence not represented in the execution character set (C90 6.1.4, -C99 and C11 6.4.5).} +C99 and C11 6.4.5, C23 6.4.6).} @xref{Implementation-defined behavior, , Implementation-defined behavior, cpp, The C Preprocessor}. @@ -209,7 +228,7 @@ behavior, cpp, The C Preprocessor}. @cite{The encoding of any of @code{wchar_t}, @code{char16_t}, and @code{char32_t} where the corresponding standard encoding macro (@code{__STDC_ISO_10646__}, @code{__STDC_UTF_16__}, or -@code{__STDC_UTF_32__}) is not defined (C11 6.10.8.2).} +@code{__STDC_UTF_32__}) is not defined (C11 6.10.8.2, C23 6.10.10.3).} @xref{Implementation-defined behavior, , Implementation-defined behavior, cpp, The C Preprocessor}. @code{char16_t} and @@ -223,8 +242,8 @@ respectively. @itemize @bullet @item -@cite{Any extended integer types that exist in the implementation (C99 -and C11 6.2.5).} +@cite{Any extended integer types that exist in the implementation (C99, +C11 and C23 6.2.5).} GCC does not support any extended integer types. @c The __mode__ attribute might create types of precisions not @@ -240,11 +259,12 @@ two's complement, or one's complement, and whether the extraordinary value is a trap representation or an ordinary value (C99 and C11 6.2.6.2).} GCC supports only two's complement integer types, and all bit patterns -are ordinary values. +are ordinary values. C23 requires signed integer types to be two's +complement. @item @cite{The rank of any extended integer type relative to another extended -integer type with the same precision (C99 and C11 6.3.1.1).} +integer type with the same precision (C99 and C11 6.3.1.1, C23 6.3.2.1).} GCC does not support any extended integer types. @c If it did, there would only be one of each precision and signedness. @@ -252,14 +272,14 @@ GCC does not support any extended integer types. @item @cite{The result of, or the signal raised by, converting an integer to a signed integer type when the value cannot be represented in an object of -that type (C90 6.2.1.2, C99 and C11 6.3.1.3).} +that type (C90 6.2.1.2, C99 and C11 6.3.1.3, C23 6.3.2.3).} For conversion to a type of width @math{N}, the value is reduced modulo @math{2^N} to be within range of the type; no signal is raised. @item @cite{The results of some bitwise operations on signed integers (C90 -6.3, C99 and C11 6.5).} +6.3, C99 and C11 6.5, C23 6.5.1).} Bitwise operators act on the representation of the value including both the sign and value bits, where the sign bit is considered @@ -267,7 +287,7 @@ immediately above the highest-value value bit. Signed @samp{>>} acts on negative numbers by sign extension. As an extension to the C language, GCC does not use the latitude given in -C99 and C11 only to treat certain aspects of signed @samp{<<} as undefined. +C99 and later to treat certain aspects of signed @samp{<<} as undefined. However, @option{-fsanitize=shift} (and @option{-fsanitize=undefined}) will diagnose such cases. They are also diagnosed where constant expressions are required. @@ -275,7 +295,7 @@ expressions are required. @item @cite{The sign of the remainder on integer division (C90 6.3.5).} -GCC always follows the C99 and C11 requirement that the result of division is +GCC always follows the C99 and later requirement that the result of division is truncated towards zero. @end itemize @@ -287,34 +307,46 @@ truncated towards zero. @item @cite{The accuracy of the floating-point operations and of the library functions in @code{<math.h>} and @code{<complex.h>} that return floating-point -results (C90, C99 and C11 5.2.4.2.2).} +results (C90, C99 and C11 5.2.4.2.2, C23 5.3.5.3.3).} The accuracy is unknown. @item @cite{The rounding behaviors characterized by non-standard values of @code{FLT_ROUNDS} -(C90, C99 and C11 5.2.4.2.2).} +(C90, C99 and C11 5.2.4.2.2, C23 5.3.5.3.3).} + +GCC does not use such values. + +@item +@cite{The evaluation methods characterized by non-standard negative +values of @code{FLT_EVAL_METHOD} (C99 and C11 5.2.4.2.2, C23 5.3.5.3.3).} GCC does not use such values. @item @cite{The evaluation methods characterized by non-standard negative -values of @code{FLT_EVAL_METHOD} (C99 and C11 5.2.4.2.2).} +values of @code{DEC_EVAL_METHOD} (C23 5.3.5.3.4).} GCC does not use such values. +@item +@cite{If decimal floating types are supported (C23 6.2.5).} + +These are supported for certain AArch64, i386, x86-64, PowerPC and +S/390 targets only. + @item @cite{The direction of rounding when an integer is converted to a floating-point number that cannot exactly represent the original -value (C90 6.2.1.3, C99 and C11 6.3.1.4).} +value (C90 6.2.1.3, C99 and C11 6.3.1.4, C23 6.3.2.4).} C99 Annex F is followed. @item @cite{The direction of rounding when a floating-point number is converted to a narrower floating-point number (C90 6.2.1.4, C99 and C11 -6.3.1.5).} +6.3.1.5, C23 6.3.2.5).} C99 Annex F is followed. @@ -322,13 +354,14 @@ C99 Annex F is followed. @cite{How the nearest representable value or the larger or smaller representable value immediately adjacent to the nearest representable value is chosen for certain floating constants (C90 6.1.3.1, C99 and C11 -6.4.4.2).} +6.4.4.2, C23 6.4.5.3).} C99 Annex F is followed. @item @cite{Whether and how floating expressions are contracted when not -disallowed by the @code{FP_CONTRACT} pragma (C99 and C11 6.5).} +disallowed by the @code{FP_CONTRACT} pragma (C99 and C11 6.5, C23 +6.5.1).} Expressions are currently only contracted if @option{-ffp-contract=fast}, @option{-funsafe-math-optimizations} or @option{-ffast-math} are used. @@ -336,7 +369,7 @@ This is subject to change. @item @cite{The default state for the @code{FENV_ACCESS} pragma (C99 and C11 -7.6.1).} +7.6.1, C23 7.6.2).} This pragma is not implemented, but the default is to ``off'' unless @option{-frounding-math} is used and @option{-fno-trapping-math} is not @@ -344,15 +377,15 @@ in which case it is ``on''. @item @cite{Additional floating-point exceptions, rounding modes, environments, -and classifications, and their macro names (C99 and C11 7.6, C99 and -C11 7.12).} +and classifications, and their macro names (C99, C11 and C23 7.6, C99, +C11 and C23 7.12).} This is dependent on the implementation of the C library, and is not defined by GCC itself. @item @cite{The default state for the @code{FP_CONTRACT} pragma (C99 and C11 -7.12.2).} +7.12.2, C23 7.12.3).} This pragma is not implemented. Expressions are currently only contracted if @option{-ffp-contract=fast}, @@ -377,13 +410,32 @@ defined by GCC itself. @end itemize +@node Constant expressions implementation +@section Constant expressions + +@itemize @bullet +@item +@cite{Whether or not an expression not explicitly sanctioned by this +document is an extended constant expression, whether or not such +extended constant expressions can be used in the same contexts as this +document, and whether or not such extended constant expressions can +affect potentially detectable semantic changes in the program (C23 +6.6).} + +The only extended constant expressions are those using other GNU +extensions to the C language. Such extended constant expressions +include integer constant expressions and arithmetic constant +expressions. + +@end itemize + @node Arrays and pointers implementation @section Arrays and Pointers @itemize @bullet @item @cite{The result of converting a pointer to an integer or -vice versa (C90 6.3.4, C99 and C11 6.3.2.3).} +vice versa (C90 6.3.4, C99 and C11 6.3.2.3, C23 6.3.3.3).} A cast from pointer to integer discards most-significant bits if the pointer representation is larger than the integer type, @@ -410,7 +462,7 @@ C99 and C11 6.5.6/8. @item @cite{The size of the result of subtracting two pointers to elements -of the same array (C90 6.3.6, C99 and C11 6.5.6).} +of the same array (C90 6.3.6, C99 and C11 6.5.6, C23 6.5.7).} The value is as specified in the standard and the type is determined by the ABI@. @@ -423,7 +475,8 @@ by the ABI@. @itemize @bullet @item @cite{The extent to which suggestions made by using the @code{register} -storage-class specifier are effective (C90 6.5.1, C99 and C11 6.7.1).} +storage-class specifier are effective (C90 6.5.1, C99 and C11 6.7.1, +C23 6.7.2).} The @code{register} specifier affects code generation only in these ways: @@ -448,7 +501,7 @@ in registers unless they are marked @code{register}. @item @cite{The extent to which suggestions made by using the inline function -specifier are effective (C99 and C11 6.7.4).} +specifier are effective (C99 and C11 6.7.4, C23 6.7.5).} GCC will not inline any functions if the @option{-fno-inline} option is used or if @option{-O0} is used. Otherwise, GCC may still be unable to @@ -472,7 +525,8 @@ may be a trap representation. @item @cite{Whether a ``plain'' @code{int} bit-field is treated as a @code{signed int} bit-field or as an @code{unsigned int} bit-field -(C90 6.5.2, C90 6.5.2.1, C99 and C11 6.7.2, C99 and C11 6.7.2.1).} +(C90 6.5.2, C90 6.5.2.1, C99 and C11 6.7.2, C23 6.7.3, C99 and C11 +6.7.2.1, C23 6.7.3.2).} @opindex funsigned-bitfields By default it is treated as @code{signed int} but this may be changed @@ -480,37 +534,38 @@ by the @option{-funsigned-bitfields} option. @item @cite{Allowable bit-field types other than @code{_Bool}, @code{signed int}, -and @code{unsigned int} (C99 and C11 6.7.2.1).} +and @code{unsigned int} (C99 and C11 6.7.2.1, C23 6.7.3.2).} Other integer types, such as @code{long int}, and enumerated types are permitted even in strictly conforming mode. @item -@cite{Whether atomic types are permitted for bit-fields (C11 6.7.2.1).} +@cite{Whether atomic types are permitted for bit-fields (C11 6.7.2.1, +C23 6.7.3.2).} Atomic types are not permitted for bit-fields. @item @cite{Whether a bit-field can straddle a storage-unit boundary (C90 -6.5.2.1, C99 and C11 6.7.2.1).} +6.5.2.1, C99 and C11 6.7.2.1, C23 6.7.3.2).} Determined by ABI@. @item @cite{The order of allocation of bit-fields within a unit (C90 -6.5.2.1, C99 and C11 6.7.2.1).} +6.5.2.1, C99 and C11 6.7.2.1, C23 6.7.3.2).} Determined by ABI@. @item @cite{The alignment of non-bit-field members of structures (C90 -6.5.2.1, C99 and C11 6.7.2.1).} +6.5.2.1, C99 and C11 6.7.2.1, C23 6.7.3.2).} Determined by ABI@. @item @cite{The integer type compatible with each enumerated type (C90 -6.5.2.2, C99 and C11 6.7.2.2).} +6.5.2.2, C99 and C11 6.7.2.2, C23 6.7.3.3).} @opindex fshort-enums Normally, the type is @code{unsigned int} if there are no negative @@ -538,7 +593,7 @@ determined by the ABI@. @itemize @bullet @item @cite{What constitutes an access to an object that has volatile-qualified -type (C90 6.5.3, C99 and C11 6.7.3).} +type (C90 6.5.3, C99 and C11 6.7.3, C23 6.7.4).} Such an object is normally accessed by pointers and used for accessing hardware. In most expressions, it is intuitively obvious what is a read @@ -584,6 +639,32 @@ object's declared type were @code{volatile S}. @end itemize +@node Types implementation +@section Types + +@itemize @bullet +@item +@cite{A program forms the composite type of an enumerated type and a +non-enumeration integer type (C23 6.2.7).} + +The composite type is the enumerated type. + +@item +@cite{Whether or not it is supported for a declaration for which a +type is inferred to contain a pointer, array, or function declarator +(C23 6.7.10).} + +This is not supported. + +@item +@cite{Whether or not it is supported for a declaration for which a +type is inferred to contain no or more than one declarators (C23 +6.7.10).} + +This is not supported. + +@end itemize + @node Declarators implementation @section Declarators @@ -618,48 +699,70 @@ implementation-defined behavior. @itemize @bullet @item @cite{The locations within @code{#pragma} directives where header name -preprocessing tokens are recognized (C11 6.4, C11 6.4.7).} +preprocessing tokens are recognized (C11 and C23 6.4, C11 6.4.7, C23 +6.4.8).} @item @cite{How sequences in both forms of header names are mapped to headers -or external source file names (C90 6.1.7, C99 and C11 6.4.7).} +or external source file names (C90 6.1.7, C99 and C11 6.4.7, C23 +6.4.8).} @item @cite{Whether the value of a character constant in a constant expression that controls conditional inclusion matches the value of the same character -constant in the execution character set (C90 6.8.1, C99 and C11 6.10.1).} +constant in the execution character set (C90 6.8.1, C99 and C11 +6.10.1, C23 6.10.2).} @item @cite{Whether the value of a single-character character constant in a constant expression that controls conditional inclusion may have a -negative value (C90 6.8.1, C99 and C11 6.10.1).} +negative value (C90 6.8.1, C99 and C11 6.10.1, C23 6.10.2).} @item @cite{The places that are searched for an included @samp{<>} delimited header, and how the places are specified or the header is -identified (C90 6.8.2, C99 and C11 6.10.2).} +identified (C90 6.8.2, C99 and C11 6.10.2, C23 6.10.3).} @item @cite{How the named source file is searched for in an included @samp{""} -delimited header (C90 6.8.2, C99 and C11 6.10.2).} +delimited header (C90 6.8.2, C99 and C11 6.10.2, C23 6.10.3).} + +@item +@cite{How the named resource file is searched for in an embedded @samp{""} +delimited resource name (C23 6.10.4).} @item @cite{The method by which preprocessing tokens (possibly resulting from macro expansion) in a @code{#include} directive are combined into a header -name (C90 6.8.2, C99 and C11 6.10.2).} +name (C90 6.8.2, C99 and C11 6.10.2, C23 6.10.3).} @item @cite{The nesting limit for @code{#include} processing (C90 6.8.2, C99 -and C11 6.10.2).} +and C11 6.10.2, C23 6.10.3).} + +@item +@cite{The method by which preprocessing tokens (possibly resulting +from macro expansion) in a @code{#embed} directive are combined into a +resource name (C23 6.10.4).} + +@item +@cite{The mapping between a resource's data and the values of the +integer constant expressions, if any, in the replacement of a +@code{#embed} directive (C23 6.10.4).} + +@item +@cite{The width of a resource located by the @code{#embed} directive +(C23 6.10.4).} @item @cite{Whether the @samp{#} operator inserts a @samp{\} character before the @samp{\} character that begins a universal character name in a -character constant or string literal (C99 and C11 6.10.3.2).} +character constant or string literal (C99 and C11 6.10.3.2, C23 +6.10.5.3).} @item @cite{The behavior on each recognized non-@code{STDC #pragma} -directive (C90 6.8.6, C99 and C11 6.10.6).} +directive (C90 6.8.6, C99 and C11 6.10.6, C23 6.10.8).} @xref{Pragmas, , Pragmas, cpp, The C Preprocessor}, for details of pragmas accepted by GCC on all targets. @xref{Pragmas, , Pragmas @@ -668,7 +771,7 @@ Accepted by GCC}, for details of target-specific pragmas. @item @cite{The definitions for @code{__DATE__} and @code{__TIME__} when respectively, the date and time of translation are not available (C90 -6.8.8, C99 6.10.8, C11 6.10.8.1).} +6.8.8, C99 6.10.8, C11 6.10.8.1, C23 6.10.10.2).} @end itemize @@ -681,7 +784,7 @@ of the C library, and are not defined by GCC itself. @itemize @bullet @item @cite{The null pointer constant to which the macro @code{NULL} expands -(C90 7.1.6, C99 7.17, C11 7.19).} +(C90 7.1.6, C99 7.17, C11 7.19, C23 7.21).} In @code{<stddef.h>}, @code{NULL} expands to @code{((void *)0)}. GCC does not provide the other headers which define @code{NULL} and some @@ -696,14 +799,15 @@ library implementations may use other definitions in those headers. @item @cite{The values or expressions assigned to the macros specified in the headers @code{<float.h>}, @code{<limits.h>}, and @code{<stdint.h>} -(C90, C99 and C11 5.2.4.2, C99 7.18.2, C99 7.18.3, C11 7.20.2, C11 7.20.3).} +(C90, C99 and C11 5.2.4.2, C23 5.3.5.3, C99 7.18.2, C99 7.18.3, C11 +7.20.2, C11 7.20.3, C23 7.22).} Determined by ABI@. @item @cite{The result of attempting to indirectly access an object with automatic or thread storage duration from a thread other than the one -with which it is associated (C11 6.2.4).} +with which it is associated (C11 and C23 6.2.4).} Such accesses are supported, subject to the same requirements for synchronization for concurrent accesses as for concurrent accesses to @@ -711,14 +815,14 @@ any object. @item @cite{The number, order, and encoding of bytes in any object -(when not explicitly specified in this International Standard) (C99 -and C11 6.2.6.1).} +(when not explicitly specified in this International Standard) (C99, +C11 and C23 6.2.6.1).} Determined by ABI@. @item @cite{Whether any extended alignments are supported and the contexts -in which they are supported (C11 6.2.8).} +in which they are supported (C11 and C23 6.2.8).} Extended alignments up to @math{2^{28}} (bytes) are supported for objects of automatic storage duration. Alignments supported for @@ -727,13 +831,13 @@ ABI. @item @cite{Valid alignment values other than those returned by an _Alignof -expression for fundamental types, if any (C11 6.2.8).} +expression for fundamental types, if any (C11 and C23 6.2.8).} Valid alignments are powers of 2 up to and including @math{2^{28}}. @item @cite{The value of the result of the @code{sizeof} and @code{_Alignof} -operators (C90 6.3.3.4, C99 and C11 6.5.3.4).} +operators (C90 6.3.3.4, C99 and C11 6.5.3.4, C23 6.5.4.5).} Determined by ABI@. -- Joseph S. Myers josmy...@redhat.com