diff mbox

Update docs for C99 and C11 support

Message ID Pine.LNX.4.64.1311290039480.22976@digraph.polyomino.org.uk
State New
Headers show

Commit Message

Joseph Myers Nov. 29, 2013, 12:40 a.m. UTC
This patch updates various documentation in GCC regarding the state of
C99 and C11 support, in particular updating the documentation of
implementation-defined behavior for C11.

Tested with "make info html pdf" and committed.

2013-11-29  Joseph Myers  <joseph@codesourcery.com>

	* doc/implement-c.texi: Document C11 implementation-defined
	behavior.  Refer to -ffp-contract=fast for contraction behavior.
	* doc/invoke.texi (-std=c99, std=c11): Update description of
	completeness.
	(-std=gnu99): Don't mention as future default.
	(-std=gnu11): Mention as intended future default.
	* doc/standards.texi: Update descriptions of C99 and C11 support.
	Limit statement about C99 facilities for freestanding
	implementations to some platforms only.
diff mbox

Patch

Index: doc/implement-c.texi
===================================================================
--- doc/implement-c.texi	(revision 205504)
+++ doc/implement-c.texi	(working copy)
@@ -9,9 +9,9 @@ 
 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 and ISO/IEC
-9899:1999 standards.  Some areas are only implementation-defined in
-one version of the standard.
+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.
 
 Some choices depend on the externally determined ABI for the platform
 (including standard character encodings) which GCC follows; these are
@@ -47,14 +47,15 @@  a freestanding environment); refer to their docume
 
 @itemize @bullet
 @item
-@cite{How a diagnostic is identified (C90 3.7, C99 3.10, C90 and C99 5.1.1.3).}
+@cite{How a diagnostic is identified (C90 3.7, C99 and C11 3.10, C90,
+C99 and C11 5.1.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 and C99 5.1.1.2).}
+phase 3 (C90, C99 and C11 5.1.1.2).}
 
 @xref{Implementation-defined behavior, , Implementation-defined
 behavior, cpp, The C Preprocessor}.
@@ -70,7 +71,8 @@  of the C library, and are not defined by GCC itsel
 @itemize @bullet
 @item
 @cite{The mapping between physical source file multibyte characters
-and the source character set in translation phase 1 (C90 and C99 5.1.1.2).}
+and the source character set in translation phase 1 (C90, C99 and C11
+5.1.1.2).}
 
 @xref{Implementation-defined behavior, , Implementation-defined
 behavior, cpp, The C Preprocessor}.
@@ -83,14 +85,14 @@  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 6.4.2).}
+and their correspondence to universal character names (C99 and C11 6.4.2).}
 
 @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 and C99 5.2.4.1, C99 6.4.2).}
+(C90 6.1.2, C90, C99 and C11 5.2.4.1, C99 and C11 6.4.2).}
 
 For internal names, all characters are significant.  For external names,
 the number of significant characters are defined by the linker; for
@@ -100,7 +102,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 requires that case distinctions
+This is a property of the linker.  C99 and C11 require that case distinctions
 are always significant in identifiers with external linkage and
 systems without this property are not supported by GCC@.
 
@@ -111,33 +113,34 @@  systems without this property are not supported by
 
 @itemize @bullet
 @item
-@cite{The number of bits in a byte (C90 3.4, C99 3.6).}
+@cite{The number of bits in a byte (C90 3.4, C99 and C11 3.6).}
 
 Determined by ABI@.
 
 @item
-@cite{The values of the members of the execution character set (C90
-and C99 5.2.1).}
+@cite{The values of the members of the execution character set (C90,
+C99 and C11 5.2.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 and C99 5.2.2).}
+for each of the standard alphabetic escape sequences (C90, C99 and C11
+5.2.2).}
 
 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 6.2.5).}
+(C90 6.1.2.5, C99 and C11 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 6.2.5, C99 6.3.1.1).}
+6.1.2.5, C90 6.2.1.1, C99 and C11 6.2.5, C99 and C11 6.3.1.1).}
 
 @opindex fsigned-char
 @opindex funsigned-char
@@ -148,23 +151,25 @@  Options Controlling C Dialect}.
 @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 6.4.4.4, C90 and C99 5.1.1.2).}
+set (C90 6.1.3.4, C99 and C11 6.4.4.4, C90, C99 and C11 5.1.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 6.4.4.4).}
+to a single-byte execution character (C90 6.1.3.4, C99 and C11 6.4.4.4).}
 
 @xref{Implementation-defined behavior, , Implementation-defined
 behavior, cpp, The C Preprocessor}.
 
 @item
 @cite{The value of a wide character constant containing more than one
-multibyte character, or containing a multibyte character or escape
-sequence not represented in the extended execution character set (C90
-6.1.3.4, C99 6.4.4.4).}
+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).}
 
 @xref{Implementation-defined behavior, , Implementation-defined
 behavior, cpp, The C Preprocessor}.
@@ -173,24 +178,44 @@  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 6.4.4.4).}
+6.1.3.4, C99 and C11 6.4.4.4).}
 
 @xref{Implementation-defined behavior, , Implementation-defined
 behavior, cpp, The C Preprocessor}.
 
 @item
+@cite{Whether differently-prefixed wide string literal tokens can be
+concatenated and, if so, the treatment of the resulting multibyte
+character sequence (C11 6.4.5).}
+
+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 6.4.5).}
+corresponding wide character codes (C90 6.1.4, C99 and C11 6.4.5).}
 
 @xref{Implementation-defined behavior, , Implementation-defined
 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 6.4.5).}
+sequence not represented in the execution character set (C90 6.1.4,
+C99 and C11 6.4.5).}
 
 @xref{Implementation-defined behavior, , Implementation-defined
 behavior, cpp, The C Preprocessor}.
+
+@item
+@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).}
+
+@xref{Implementation-defined behavior, , Implementation-defined
+behavior, cpp, The C Preprocessor}.  @code{char16_t} and
+@code{char32_t} literals are always encoded in UTF-16 and UTF-32
+respectively.
+
 @end itemize
 
 @node Integers implementation
@@ -198,7 +223,8 @@  behavior, cpp, The C Preprocessor}.
 
 @itemize @bullet
 @item
-@cite{Any extended integer types that exist in the implementation (C99 6.2.5).}
+@cite{Any extended integer types that exist in the implementation (C99
+and C11 6.2.5).}
 
 GCC does not support any extended integer types.
 @c The __mode__ attribute might create types of precisions not
@@ -211,14 +237,14 @@  GCC does not support any extended integer types.
 @item
 @cite{Whether signed integer types are represented using sign and magnitude,
 two's complement, or one's complement, and whether the extraordinary value
-is a trap representation or an ordinary value (C99 6.2.6.2).}
+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.
 
 @item
 @cite{The rank of any extended integer type relative to another extended
-integer type with the same precision (C99 6.3.1.1).}
+integer type with the same precision (C99 and C11 6.3.1.1).}
 
 GCC does not support any extended integer types.
 @c If it did, there would only be one of each precision and signedness.
@@ -226,28 +252,28 @@  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 6.3.1.3).}
+that type (C90 6.2.1.2, C99 and C11 6.3.1.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 6.5).}
+6.3, C99 and C11 6.5).}
 
 Bitwise operators act on the representation of the value including
 both the sign and value bits, where the sign bit is considered
 immediately above the highest-value value bit.  Signed @samp{>>} acts
 on negative numbers by sign extension.
 
-GCC does not use the latitude given in C99 only to treat certain
+GCC does not use the latitude given in C99 and C11 only to treat certain
 aspects of signed @samp{<<} as undefined, but this is subject to
 change.
 
 @item
 @cite{The sign of the remainder on integer division (C90 6.3.5).}
 
-GCC always follows the C99 requirement that the result of division is
+GCC always follows the C99 and C11 requirement that the result of division is
 truncated towards zero.
 
 @end itemize
@@ -259,33 +285,33 @@  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 and C99 5.2.4.2.2).}
+results (C90, C99 and C11 5.2.4.2.2).}
 
 The accuracy is unknown.
 
 @item
 @cite{The rounding behaviors characterized by non-standard values
 of @code{FLT_ROUNDS} @gol
-(C90 and C99 5.2.4.2.2).}
+(C90, C99 and C11 5.2.4.2.2).}
 
 GCC does not use such values.
 
 @item
 @cite{The evaluation methods characterized by non-standard negative
-values of @code{FLT_EVAL_METHOD} (C99 5.2.4.2.2).}
+values of @code{FLT_EVAL_METHOD} (C99 and C11 5.2.4.2.2).}
 
 GCC does not use such values.
 
 @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 6.3.1.4).}
+value (C90 6.2.1.3, C99 and C11 6.3.1.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
+converted to a narrower floating-point number (C90 6.2.1.4, C99 and C11
 6.3.1.5).}
 
 C99 Annex F is followed.
@@ -293,38 +319,42 @@  C99 Annex F is followed.
 @item
 @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
+value is chosen for certain floating constants (C90 6.1.3.1, C99 and C11
 6.4.4.2).}
 
 C99 Annex F is followed.
 
 @item
 @cite{Whether and how floating expressions are contracted when not
-disallowed by the @code{FP_CONTRACT} pragma (C99 6.5).}
+disallowed by the @code{FP_CONTRACT} pragma (C99 and C11 6.5).}
 
-Expressions are currently only contracted if
+Expressions are currently only contracted if @option{-ffp-contract=fast},
 @option{-funsafe-math-optimizations} or @option{-ffast-math} are used.
 This is subject to change.
 
 @item
-@cite{The default state for the @code{FENV_ACCESS} pragma (C99 7.6.1).}
+@cite{The default state for the @code{FENV_ACCESS} pragma (C99 and C11
+7.6.1).}
 
 This pragma is not implemented, but the default is to ``off'' unless
 @option{-frounding-math} is used in which case it is ``on''.
 
 @item
 @cite{Additional floating-point exceptions, rounding modes, environments,
-and classifications, and their macro names (C99 7.6, C99 7.12).}
+and classifications, and their macro names (C99 and C11 7.6, C99 and
+C11 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 7.12.2).}
+@cite{The default state for the @code{FP_CONTRACT} pragma (C99 and C11
+7.12.2).}
 
 This pragma is not implemented.  Expressions are currently only
-contracted if @option{-funsafe-math-optimizations} or
-@option{-ffast-math} are used.  This is subject to change.
+contracted if @option{-ffp-contract=fast},
+@option{-funsafe-math-optimizations} or @option{-ffast-math} are used.
+This is subject to change.
 
 @item
 @cite{Whether the ``inexact'' floating-point exception can be raised
@@ -350,7 +380,7 @@  defined by GCC itself.
 @itemize @bullet
 @item
 @cite{The result of converting a pointer to an integer or
-vice versa (C90 6.3.4, C99 6.3.2.3).}
+vice versa (C90 6.3.4, C99 and C11 6.3.2.3).}
 
 A cast from pointer to integer discards most-significant bits if the
 pointer representation is larger than the integer type,
@@ -373,11 +403,11 @@  When casting from pointer to integer and back agai
 pointer must reference the same object as the original pointer, otherwise
 the behavior is undefined.  That is, one may not use integer arithmetic to
 avoid the undefined behavior of pointer arithmetic as proscribed in
-C99 6.5.6/8.
+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 6.5.6).}
+of the same array (C90 6.3.6, C99 and C11 6.5.6).}
 
 The value is as specified in the standard and the type is determined
 by the ABI@.
@@ -390,7 +420,7 @@  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 6.7.1).}
+storage-class specifier are effective (C90 6.5.1, C99 and C11 6.7.1).}
 
 The @code{register} specifier affects code generation only in these ways:
 
@@ -415,7 +445,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 6.7.4).}
+specifier are effective (C99 and C11 6.7.4).}
 
 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
@@ -439,7 +469,7 @@  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 6.7.2, C99 6.7.2.1).}
+(C90 6.5.2, C90 6.5.2.1, C99 and C11 6.7.2, C99 and C11 6.7.2.1).}
 
 @opindex funsigned-bitfields
 By default it is treated as @code{signed int} but this may be changed
@@ -447,33 +477,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 6.7.2.1).}
+and @code{unsigned int} (C99 and C11 6.7.2.1).}
 
 No other types are permitted in strictly conforming mode.
 @c Would it be better to restrict the pedwarn for other types to C90
-@c mode and document the other types for C99 mode?
+@c mode and document the other types for C99/C11 mode?
 
 @item
+@cite{Whether atomic types are permitted for bit-fields (C11 6.7.2.1).}
+
+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 6.7.2.1).}
+6.5.2.1, C99 and C11 6.7.2.1).}
 
 Determined by ABI@.
 
 @item
 @cite{The order of allocation of bit-fields within a unit (C90
-6.5.2.1, C99 6.7.2.1).}
+6.5.2.1, C99 and C11 6.7.2.1).}
 
 Determined by ABI@.
 
 @item
 @cite{The alignment of non-bit-field members of structures (C90
-6.5.2.1, C99 6.7.2.1).}
+6.5.2.1, C99 and C11 6.7.2.1).}
 
 Determined by ABI@.
 
 @item
 @cite{The integer type compatible with each enumerated type (C90
-6.5.2.2, C99 6.7.2.2).}
+6.5.2.2, C99 and C11 6.7.2.2).}
 
 @opindex fshort-enums
 Normally, the type is @code{unsigned int} if there are no negative
@@ -501,7 +536,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 6.7.3).}
+type (C90 6.5.3, C99 and C11 6.7.3).}
 
 Such an object is normally accessed by pointers and used for accessing
 hardware.  In most expressions, it is intuitively obvious what is a read
@@ -575,45 +610,49 @@  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).}
+
+@item
 @cite{How sequences in both forms of header names are mapped to headers
-or external source file names (C90 6.1.7, C99 6.4.7).}
+or external source file names (C90 6.1.7, C99 and C11 6.4.7).}
 
 @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 6.10.1).}
+constant in the execution character set (C90 6.8.1, C99 and C11 6.10.1).}
 
 @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 6.10.1).}
+negative value (C90 6.8.1, C99 and C11 6.10.1).}
 
 @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 6.10.2).}
+identified (C90 6.8.2, C99 and C11 6.10.2).}
 
 @item
 @cite{How the named source file is searched for in an included @samp{""}
-delimited header (C90 6.8.2, C99 6.10.2).}
+delimited header (C90 6.8.2, C99 and C11 6.10.2).}
 
 @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 6.10.2).}
+name (C90 6.8.2, C99 and C11 6.10.2).}
 
 @item
 @cite{The nesting limit for @code{#include} processing (C90 6.8.2, C99
-6.10.2).}
+and C11 6.10.2).}
 
 @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 6.10.3.2).}
+character constant or string literal (C99 and C11 6.10.3.2).}
 
 @item
 @cite{The behavior on each recognized non-@code{STDC #pragma}
-directive (C90 6.8.6, C99 6.10.6).}
+directive (C90 6.8.6, C99 and C11 6.10.6).}
 
 @xref{Pragmas, , Pragmas, cpp, The C Preprocessor}, for details of
 pragmas accepted by GCC on all targets.  @xref{Pragmas, , Pragmas
@@ -622,7 +661,7 @@  Accepted by GCC}, for details of target-specific p
 @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).}
+6.8.8, C99 6.10.8, C11 6.10.8.1).}
 
 @end itemize
 
@@ -635,7 +674,7 @@  of the C library, and are not defined by GCC itsel
 @itemize @bullet
 @item
 @cite{The null pointer constant to which the macro @code{NULL} expands
-(C90 7.1.6, C99 7.17).}
+(C90 7.1.6, C99 7.17, C11 7.19).}
 
 In @code{<stddef.h>}, @code{NULL} expands to @code{((void *)0)}.  GCC
 does not provide the other headers which define @code{NULL} and some
@@ -650,20 +689,45 @@  library implementations may use other definitions
 @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 and C99 5.2.4.2, C99 7.18.2, C99 7.18.3).}
+(C90, C99 and C11 5.2.4.2, C99 7.18.2, C99 7.18.3, C11 7.20.2, C11 7.20.3).}
 
 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).}
+
+Such accesses are supported, subject to the same requirements for
+synchronization for concurrent accesses as for concurrent accesses to
+any object.
+
+@item
 @cite{The number, order, and encoding of bytes in any object
-(when not explicitly specified in this International Standard) (C99 6.2.6.1).}
+(when not explicitly specified in this International Standard) (C99
+and C11 6.2.6.1).}
 
 Determined by ABI@.
 
 @item
-@cite{The value of the result of the @code{sizeof} operator (C90
-6.3.3.4, C99 6.5.3.4).}
+@cite{Whether any extended alignments are supported and the contexts
+in which they are supported (C11 6.2.8).}
 
+Extended alignments up to @math{2^{28}} (bytes) are supported for
+objects of automatic storage duration.  Alignments supported for
+objects of static and thread storage duration are determined by the
+ABI.
+
+@item
+@cite{Valid alignment values other than those returned by an _Alignof
+expression for fundamental types, if any (C11 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).}
+
 Determined by ABI@.
 
 @end itemize
Index: doc/standards.texi
===================================================================
--- doc/standards.texi	(revision 205504)
+++ doc/standards.texi	(working copy)
@@ -85,8 +85,8 @@  as @dfn{AMD1}; the amended standard is sometimes k
 @option{-pedantic} to receive all required diagnostics).
 
 A new edition of the ISO C standard was published in 1999 as ISO/IEC
-9899:1999, and is commonly known as @dfn{C99}.  GCC has incomplete
-support for this standard version; see
+9899:1999, and is commonly known as @dfn{C99}.  GCC has substantially
+complete support for this standard version; see
 @uref{http://gcc.gnu.org/c99status.html} for details.  To select this
 standard, use @option{-std=c99} or @option{-std=iso9899:1999}.  (While in
 development, drafts of this standard version were referred to as
@@ -97,8 +97,8 @@  Corrigenda published in 2001, 2004 and 2007.  GCC
 uncorrected version.
 
 A fourth version of the C standard, known as @dfn{C11}, was published
-in 2011 as ISO/IEC 9899:2011.  GCC has limited incomplete support for
-parts of this standard, enabled with @option{-std=c11} or
+in 2011 as ISO/IEC 9899:2011.  GCC has substantially complete support
+for this standard, enabled with @option{-std=c11} or
 @option{-std=iso9899:2011}.  (While in development, drafts of this
 standard version were referred to as @dfn{C1X}.)
 
@@ -111,10 +111,9 @@  select an extended version of the C language expli
 @option{-std=gnu90} (for C90 with GNU extensions), @option{-std=gnu99}
 (for C99 with GNU extensions) or @option{-std=gnu11} (for C11 with GNU
 extensions).  The default, if no C language dialect
-options are given, is @option{-std=gnu90}; this will change to
-@option{-std=gnu99} or @option{-std=gnu11} in some future release when
-the C99 or C11 support is
-complete.  Some features that are part of the C99 standard are
+options are given, is @option{-std=gnu90}; this is intended to change
+to @option{-std=gnu11} in some future release.  Some features that are
+part of the C99 standard are
 accepted as extensions in C90 mode, and some features that are part of
 the C11 standard are accepted as extensions in C90 and C99 modes.
 
@@ -156,7 +155,7 @@  your own arrangements for linking and startup.
 
 GCC does not provide the library facilities required only of hosted
 implementations, nor yet all the facilities required by C99 of
-freestanding implementations; to use the facilities of a hosted
+freestanding implementations on all platforms; to use the facilities of a hosted
 environment, you will need to find them elsewhere (for example, in the
 GNU C library).  @xref{Standard Libraries,,Standard Libraries}.
 
Index: doc/invoke.texi
===================================================================
--- doc/invoke.texi	(revision 205504)
+++ doc/invoke.texi	(working copy)
@@ -1654,16 +1654,24 @@  ISO C90 as modified in amendment 1.
 @itemx c9x
 @itemx iso9899:1999
 @itemx iso9899:199x
-ISO C99.  Note that this standard is not yet fully supported; see
+ISO C99.  This standard is substantially completely supported, modulo
+bugs, extended identifiers (supported except for corner cases when
+@option{-fextended-identifiers} is used) and floating-point issues
+(mainly but not entirely relating to optional C99 features from
+Annexes F and G).  See
 @w{@uref{http://gcc.gnu.org/c99status.html}} for more information.  The
 names @samp{c9x} and @samp{iso9899:199x} are deprecated.
 
 @item c11
 @itemx c1x
 @itemx iso9899:2011
-ISO C11, the 2011 revision of the ISO C standard.
-Support is incomplete and experimental.  The name @samp{c1x} is
-deprecated.
+ISO C11, the 2011 revision of the ISO C standard.  This standard is
+substantially completely supported, modulo bugs, extended identifiers
+(supported except for corner cases when
+@option{-fextended-identifiers} is used), floating-point issues
+(mainly but not entirely relating to optional C11 features from
+Annexes F and G) and the optional Annexes K (Bounds-checking
+interfaces) and L (Analyzability).  The name @samp{c1x} is deprecated.
 
 @item gnu90
 @itemx gnu89
@@ -1672,13 +1680,12 @@  is the default for C code.
 
 @item gnu99
 @itemx gnu9x
-GNU dialect of ISO C99.  When ISO C99 is fully implemented in GCC,
-this will become the default.  The name @samp{gnu9x} is deprecated.
+GNU dialect of ISO C99.  The name @samp{gnu9x} is deprecated.
 
 @item gnu11
 @itemx gnu1x
-GNU dialect of ISO C11.  Support is incomplete and experimental.  The
-name @samp{gnu1x} is deprecated.
+GNU dialect of ISO C11.  This is intended to become the default in a
+future release of GCC.  The name @samp{gnu1x} is deprecated.
 
 @item c++98
 @itemx c++03