Author: Aaron Ballman
Date: 2024-06-21T13:47:57-04:00
New Revision: 918ef312d1fda56ff783f3974b5a193542e5497c

URL: 
https://github.com/llvm/llvm-project/commit/918ef312d1fda56ff783f3974b5a193542e5497c
DIFF: 
https://github.com/llvm/llvm-project/commit/918ef312d1fda56ff783f3974b5a193542e5497c.diff

LOG: [C99] Claim full conformance to C99

We now believe we know the status of all the proposals that went into
C99. There are three entries marked Partial:

N448 restricted pointers
------------------------
Clang fully conforms to the standard requirements, but LLVM support
could be improved to support more than just restricted pointers used
as function parameters.

N693 complex and imaginary support in <complex.h>
-------------------------------------------------
Clang supports _Complex but not _Imaginary. Clang does not attempt to
implement Annex G, so a lack of _Imaginary is not necessary for
conformance to C99. It's also worth noting that C2y is anticipated to
remove support for _Imaginary (see WG14 N3274 which was adopted at the
June 2024 meeting).

However, support for _Complex requires runtime support and compiler-rt
is not supported on all targets (notably, Windows).

(Doc # unknown) IEC 60559 support
---------------------------------
Clang largely conforms to the requirements in Annex F, but there are
edge cases that are incorrect. However, Clang does not predefine the
__STDC_IEC_559__ macro and so we don't claim to conform to Annex F yet.

Because all three of these partial entries are technically conforming,
it seems reasonable to claim full conformance for C99.

Added: 
    

Modified: 
    clang/www/c_status.html

Removed: 
    


################################################################################
diff  --git a/clang/www/c_status.html b/clang/www/c_status.html
index d8700d6bf3779..d71d4c216f744 100644
--- a/clang/www/c_status.html
+++ b/clang/www/c_status.html
@@ -44,7 +44,15 @@ <h1>C Support in Clang</h1>
 <tr>
  <td><a href="#c99">C99</a></td>
  <td><tt>-std=c99</tt></td>
- <td class="unknown" align="center">Almost certainly</td>
+ <td class="full" align="center">Clang 17</td>
+ <!-- We claim full conformance to C99 despite there being a few entries marked
+      "partial". The partial entries do not impact whether we conform to the
+      letter of the standard, but they are for circumstances where the missing
+      support is thought to only be in edge cases or where we believe we could
+      make further efforts to significantly improve the support. While we list
+      Clang 17 as the version of Clang which fully supports C99, support for
+      the language mode was largely complete in earlier versions of Clang going
+      back to 3.0. -->
 </tr>
 <tr>
  <td><a href="#c11">C11</a></td>
@@ -63,9 +71,9 @@ <h1>C Support in Clang</h1>
 </tr>
 </table>
 
-<p>The implementation status for C99, C11, C17, and C23 are currently under
-investigation. Any proposal whose status in Clang is currently unknown
-will be marked in <span class="unknown">magenta</span>.</p>
+<p>The implementation status for C11 and C23 are currently under investigation.
+Any proposal whose status in Clang is currently unknown will be marked in
+<span class="unknown">magenta</span>.</p>
 
 <p>The Clang community is continually striving to improve C standards
 compliance between releases by submitting and tracking
@@ -83,7 +91,7 @@ <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>Clang implements all of the ISO 9899:1999 (C99) standard.</p>
 <p>Note, the list of C99 features comes from the C99 committee draft. Not all 
C99 documents are publicly available, so the documents referenced in this 
section may be inaccurate, unknown, or not linked.</p>
 <!-- https://www.open-std.org/jtc1/sc22/wg14/www/docs/n874.htm contains the
      final editor's report of what's been added to C99, but it includes more


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to