[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