diff mbox

4.7 version of c99status.html

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

Commit Message

Joseph Myers March 13, 2012, 11:19 p.m. UTC
I've created the 4.7 version of c99status.html and made the 4.7 branch 
manual refer to it instead of the mainline version of the page.  Doc patch 
tested with "make info html pdf".
diff mbox

Patch

Index: c99status.html
===================================================================
RCS file: /cvs/gcc/wwwdocs/htdocs/c99status.html,v
retrieving revision 1.57
diff -u -r1.57 c99status.html
--- c99status.html	18 Mar 2011 17:47:35 -0000	1.57
+++ c99status.html	13 Mar 2012 23:11:10 -0000
@@ -21,6 +21,7 @@ 
 
 <p>This page describes the C99 support in mainline GCC, not in any
 particular release.  Information is also available on <a
+href="gcc-4.7/c99status.html">C99 support in GCC 4.7</a>, <a
 href="gcc-4.6/c99status.html">C99 support in GCC 4.6</a>, <a
 href="gcc-4.5/c99status.html">C99 support in GCC 4.5</a>, <a
 href="gcc-4.4/c99status.html">C99 support in GCC 4.4</a>, <a
Index: gcc-4.7/c99status.html
===================================================================
RCS file: gcc-4.7/c99status.html
diff -N gcc-4.7/c99status.html
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gcc-4.7/c99status.html	13 Mar 2012 23:11:10 -0000
@@ -0,0 +1,372 @@ 
+<html>
+
+<head>
+<title>Status of C99 features in GCC 4.7</title>
+</head>
+
+<body>
+<h1>Status of C99 features in GCC 4.7</h1>
+
+<p>This table is based on the list in the foreword to <a
+href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf">N1256</a>
+(ISO/IEC 9899:1999 (E), consolidated with ISO/IEC 9899:1999/Cor.1:2001
+(E), ISO/IEC 9899:1999/Cor.2:2004 (E) and ISO/IEC 9899:1999/Cor.3:2007
+(E)).</p>
+
+<p>Where "Library Issue" is listed in conjunction with some other
+status, this means that some compiler support is needed for the
+library support, or desirable in conjunction with it.  Note that the
+headers required of conforming freestanding implementations (clause 4
+paragraph 6) do not count as library issues.</p>
+
+<p>This page describes the C99 support in GCC 4.7.  Information on <a
+href="../c99status.html">C99 support in mainline GCC</a> is also
+available.</p>
+
+<p>See below the table for further notes on some issues.</p>
+
+<table border="1">
+<tr><th>Feature</th>
+    <th>Library Issue</th>
+    <th>Done</th>
+    <th>Broken</th>
+    <th>Missing</th>
+</tr>
+
+<tr><td><em>restricted character set support via digraphs and
+    <br /><code>&lt;iso646.h&gt;</code> (originally specified in AMD1)</em></td>
+    <td></td>
+    <td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>wide character library support in
+    <code>&lt;wchar.h&gt;</code><br />and <code>&lt;wctype.h&gt;</code>
+    (originally specified in AMD1)</em></td>
+    <td>Library Issue</td>
+    <td></td><td></td><td>Missing</td>
+</tr>
+
+<tr><td><em>more precise aliasing rules via effective type</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>restricted pointers</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>variable-length arrays</em></td>
+    <td></td><td>Done</td><td></td>
+    <td></td>
+</tr>
+
+<tr><td><em>flexible array members</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em><code>static</code> and type qualifiers<br />in parameter array declarators</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>complex (and imaginary) support in <code>&lt;complex.h&gt;</code></em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>type-generic math macros in <code>&lt;tgmath.h&gt;</code></em></td>
+    <td>Library Issue</td>
+    <td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>the <code>long long int</code> type and library functions</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>increased minimum translation limits</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>additional floating-point characteristics<br />in <code>&lt;float.h&gt;</code></em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>remove implicit <code>int</code></em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>reliable integer division</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>universal character names (<code>\u</code> and <code>\U</code>)</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>extended identifiers</em></td>
+    <td></td><td></td><td></td><td>Missing</td>
+</tr>
+
+<tr><td><em>hexadecimal floating-point constants and
+    <code>%a</code><br /> and <code>%A</code>
+    <code>printf</code>/<code>scanf</code> conversion specifiers</em></td>
+    <td>Library Issue</td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>compound literals</em></td>
+    <td></td><td>Done</td><td></td>
+    <td></td>
+</tr>
+
+<tr><td><em>designated initializers</em></td>
+    <td></td><td>Done</td><td></td>
+    <td></td>
+</tr>
+
+<tr><td><em><code>//</code> comments</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>library functions in <code>&lt;inttypes.h&gt;</code></em></td>
+    <td>Library Issue</td>
+    <td></td><td></td><td></td>
+</tr>
+
+<tr><td><em>extended integer types in <code>&lt;stdint.h&gt;</code></em></td>
+    <td></td>
+    <td></td><td></td><td>Missing</td>
+</tr>
+
+<tr><td><em>remove implicit function declaration</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>preprocessor arithmetic<br />done in <code>intmax_t</code>/<code>uintmax_t</code></em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>mixed declarations and code</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>new block scopes for selection<br />and iteration statements</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>integer constant type rules</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>integer promotion rules</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>macros with a variable number of arguments</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>the <code>vscanf</code> family of functions
+    in<br /><code>&lt;stdio.h&gt;</code> and <code>&lt;wchar.h&gt;</code></em></td>
+    <td>Library Issue</td>
+    <td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>additional math library functions in <code>&lt;math.h&gt;</code></em></td>
+    <td>Library Issue</td>
+    <td></td><td></td><td></td>
+</tr>
+
+<tr><td><em>treatment of error conditions by math library functions (<code>math_errhandling</code>)</em></td>
+    <td>Library Issue</td>
+    <td></td><td></td><td>Missing</td>
+</tr>
+
+<tr><td><em>floating-point environment access<br />in <code>&lt;fenv.h&gt;</code></em></td>
+    <td>Library Issue</td>
+    <td></td><td></td><td></td>
+</tr>
+
+<tr><td><em>IEC 60559 (also known as<br />IEC 559 or IEEE arithmetic) support</em></td>
+    <td></td><td></td><td>Broken</td><td></td>
+</tr>
+
+<tr><td><em>trailing comma allowed in <code>enum</code> declaration</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em><code>%lf</code> conversion specifier<br />allowed in <code>printf</code></em></td>
+    <td>Library Issue</td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>inline functions</em></td>
+    <td></td><td>Done</td><td></td>
+    <td></td>
+</tr>
+
+<tr><td><em>the <code>snprintf</code> family of functions in <code>&lt;stdio.h&gt;</code></em></td>
+    <td>Library Issue</td>
+    <td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>boolean type in <code>&lt;stdbool.h&gt;</code></em></td>
+    <td></td>
+    <td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>idempotent type qualifiers</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>empty macro arguments</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>new struct type compatibility<br />rules (tag compatibility)</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>additional predefined macro names</em></td>
+    <td></td><td></td><td></td><td>Missing</td>
+</tr>
+
+<tr><td><em><code>_Pragma</code> preprocessing operator</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>standard pragmas</em></td>
+    <td></td><td></td><td></td><td>Missing</td>
+</tr>
+
+<tr><td><em><code>__func__</code> predefined identifier</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em><code>va_copy</code> macro</em></td>
+    <td></td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>additional <code>strftime</code> conversion specifiers</em></td>
+    <td>Library Issue</td><td>Done</td><td></td><td></td>
+</tr>
+
+<tr><td><em>deprecate <code>ungetc</code> at the<br />beginning of a binary file</em></td>
+    <td>Library Issue</td>
+    <td></td><td></td><td></td>
+</tr>
+
+<tr><td><em>remove deprecation of<br />aliased array parameters</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>conversion of array to pointer not limited to lvalues</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>relaxed constraints on aggregate<br />and union initialization</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em>relaxed restrictions on portable header names</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><td><em><code>return</code> without expression not permitted
+    in<br />function that returns a value (and vice versa)</em></td>
+    <td></td><td>Done</td>
+    <td></td><td></td>
+</tr>
+
+<tr><th>Feature</th>
+    <th>Library Issue</th>
+    <th>Done</th>
+    <th>Broken</th>
+    <th>Missing</th>
+</tr>
+</table>
+
+<h2>Further notes</h2>
+
+<ul>
+
+<li>cpp has limited support for multibyte character sets.</li>
+
+<li>IEC 60559 is IEEE 754 floating point.  This works if and only if
+the hardware is perfectly compliant, but GCC does not define
+<code>__STDC_IEC_559__</code> or implement the associated standard
+pragmas; nor do some options such as <code>-frounding-math</code> to
+enable the pragmas globally work in all cases (for example, required
+exceptions may not be generated) and contracting expressions (e.g.,
+using fused multiply-add) is not restricted to source-language
+expressions as required by C99.</li>
+
+<li>Compiler support is needed for thorough support of <code>math_errhandling</code>; see
+messages <a
+href="http://sources.redhat.com/ml/libc-hacker/2000-06/msg00008.html">1</a>,
+<a
+href="http://sources.redhat.com/ml/libc-hacker/2000-06/msg00014.html">2</a>,
+<a
+href="http://sources.redhat.com/ml/libc-hacker/2000-06/msg00015.html">3</a>
+on this subject to libc-hacker.  The compiler needs to mark its output
+from compilations using <code>-fno-trapping-math</code>
+or <code>-fno-math-errno</code>, possibly using
+the <code>.gnu_attribute</code> mechanism, to indicate that built-in
+function optimizations may have been applied that mean that not all
+calls report error status in a particular way; the static linker
+needs to put this information in executables and shared libraries and
+the C library needs to use it to set <code>math_errhandling</code> at
+startup to a conservatively correct value based on the information
+from the compiler.  There is currently some limited GNU C Library
+support that only conforms as long as the above options are not used
+anywhere in the program.</li>
+
+<li>GCC doesn't have <code>wprintf</code>, <code>wscanf</code> and
+<code>wcsftime</code> format checking support.</li>
+
+<li>GCC does not support the Annex G imaginary types and complex
+multiplication and division have excess overflows at runtime (although
+not beyond those permitted by C99).</li>
+
+<li><code>&lt;stdint.h&gt;</code> is provided by GCC, or fixed where
+the system headers provide a nonconforming version, on some but not
+yet all systems.  On systems where types in this header have been
+defined as <code>char</code>, GCC retains this definition although it
+is not permitted by C99.</li>
+
+<li>Some of the C99 predefined macros represent properties of the
+compiler and library together and so defining them for the whole
+translation unit requires cooperation with the library;
+a <a href="http://sourceware.org/ml/libc-alpha/2009-04/msg00005.html">GNU
+C Library patch</a> for this is pending review.</li>
+
+<li><code>const</code>-qualified compound literals could share storage
+with each other and with string literals, but currently don't.</li>
+
+<li>The information provided by <code>static</code> in parameter array
+declarators is not used for optimization.  It might make sense to use
+it in future in conjunction with <a href="../projects/prefetch.html">work
+on prefetching</a>.</li>
+
+<li>The list above differs from that in N1256 as follows:
+"LIA compatibility annex" is removed, since it refers to C99's
+conformance to another standard rather than something for C
+implementations to do.  The <code>&lt;stdint.h&gt;</code> and
+<code>&lt;inttypes.h&gt;</code> entries have been separated, but are a
+single entry in C99.</li>
+
+</ul>
+
+</body>
+</html>
Index: doc/standards.texi
===================================================================
--- doc/standards.texi	(revision 185363)
+++ doc/standards.texi	(working copy)
@@ -88,7 +88,7 @@ 
 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
-@uref{http://gcc.gnu.org/c99status.html} for details.  To select this
+@uref{http://gcc.gnu.org/gcc-4.7/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
 @dfn{C9X}.)
Index: doc/invoke.texi
===================================================================
--- doc/invoke.texi	(revision 185363)
+++ doc/invoke.texi	(working copy)
@@ -1570,7 +1570,7 @@ 
 @itemx iso9899:1999
 @itemx iso9899:199x
 ISO C99.  Note that this standard is not yet fully supported; see
-@w{@uref{http://gcc.gnu.org/c99status.html}} for more information.  The
+@w{@uref{http://gcc.gnu.org/gcc-4.7/c99status.html}} for more information.  The
 names @samp{c9x} and @samp{iso9899:199x} are deprecated.
 
 @item c11
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 185363)
+++ ChangeLog	(working copy)
@@ -1,3 +1,8 @@ 
+2012-03-13  Joseph Myers  <joseph@codesourcery.com>
+
+	* doc/invoke.texi (-std=c99), doc/standards.texi (C language):
+	Refer to GCC 4.7 version of c99status.html.
+
 2012-03-12  Michael Meissner  <meissner@linux.vnet.ibm.com>
 
 	Backport from mainline