[clang] 101c3de - Add information about C99 to the C status page.
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 17 10:49:26 PDT 2021
Author: Aaron Ballman
Date: 2021-09-17T13:49:17-04:00
New Revision: 101c3de39fbcdd7d47b25aaf6d972e435f017077
URL: https://github.com/llvm/llvm-project/commit/101c3de39fbcdd7d47b25aaf6d972e435f017077
DIFF: https://github.com/llvm/llvm-project/commit/101c3de39fbcdd7d47b25aaf6d972e435f017077.diff
LOG: Add information about C99 to the C status page.
Added:
Modified:
clang/www/c_status.html
Removed:
################################################################################
diff --git a/clang/www/c_status.html b/clang/www/c_status.html
index 4fb3764233fda..386859125a82a 100644
--- a/clang/www/c_status.html
+++ b/clang/www/c_status.html
@@ -84,8 +84,251 @@ <h2 id="c89">C89 implementation status</h2>
<h2 id="c99">C99 implementation status</h2>
<p>Clang implements a significant portion of the ISO 9899:1999 (C99) standard, but the status of individual proposals is still under investigation.</p>
+<p>Note, the list of C99 features comes from the C99 committee draft. A list of N-numbered documents for these features does not appear in either the standard or in any available editor's report, so this section does not track document numbers currently.</p>
<p>You can use Clang in C99 mode with the <code>-std=c99</code> option.</p>
+<details>
+<summary>List of features and minimum Clang version with support</summary>
+
+<table width="689" border="1" cellspacing="0">
+ <tr>
+ <th>Language Feature</th>
+<!-- <th>C99 Proposal</th> -->
+ <th>Available in Clang?</th>
+ </tr>
+ <tr>
+ <td>restricted character set support via digraphs and <iso646.h></td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>more precise aliasing rules via effective type</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>restricted pointers</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>variable length arrays</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>flexible array members</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>static and type qualifiers in parameter array declarators</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>more precise aliasing rules via effective type</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>complex and imaginary support in <complex.h></td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>type-generic math macros in <tgmath.h></td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>the long long int type</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>increase minimum translation limits</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>additional floating-point characteristics in <float.h></td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>remove implicit int</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>reliable integer division</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>universal character names (\u and \U)</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>extended identifiers</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>hexadecimal floating-point constants</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>compound literals</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>designated initializers</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>// comments</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>extended integer types and library functions in <inttypes.h> and <stdint.h></td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>remove implicit function declaration</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>preprocessor arithmetic done in intmax_t/uintmax_t</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>mixed declarations and code</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>new block scopes for selection and iteration statements</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>integer constant type rules</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>integer promotion rules</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>macros with a variable number of arguments</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>IEC 60559 support</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>trailing comma allowed in enum declaration</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>inline functions</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>boolean type in <stdbool.h></td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>idempotent type qualifiers</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>empty macro arguments</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>new structure type compatibility (tag compatibility)</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>additional predefined macro names</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>_Pragma preprocessing operator</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>standard pragmas</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>__func__ predefined identifier</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>va_copy macro</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+ <tr>
+ <td>LIA compatibility annex</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="none" align="center">No</td>
+ </tr>
+ <tr>
+ <td>remove deprecation of aliased array parameters</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>conversion of array to pointer not limited to lvalues</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>relaxed constraints on aggregate and union initialization</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>relaxed restrictions on portable header names</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="unknown" align="center">Unknown</td>
+ </tr>
+ <tr>
+ <td>return without an expression not permitted in function that returns a value</td>
+<!-- <td><a href="">NXXXX</a></td> -->
+ <td class="full" align="center">Yes</td>
+ </tr>
+</table>
+</details>
+
<h2 id="c11">C11 implementation status</h2>
<p>Clang implements a significant portion of the ISO 9899:2011 (C11) standard, but the status of individual proposals is still under investigation.</p>
More information about the cfe-commits
mailing list