aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Ballman <aaron@aaronballman.com>2024-06-21 13:40:54 -0400
committerAaron Ballman <aaron@aaronballman.com>2024-06-21 13:47:57 -0400
commit918ef312d1fda56ff783f3974b5a193542e5497c (patch)
tree68c998ed66d61a11c86915cfd5a6e8eaea46774e
parentf0b93096690ebc98017c05b58202fa5a3a84d7ea (diff)
downloadllvm-918ef312d1fda56ff783f3974b5a193542e5497c.zip
llvm-918ef312d1fda56ff783f3974b5a193542e5497c.tar.gz
llvm-918ef312d1fda56ff783f3974b5a193542e5497c.tar.bz2
[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.
-rw-r--r--clang/www/c_status.html18
1 files changed, 13 insertions, 5 deletions
diff --git a/clang/www/c_status.html b/clang/www/c_status.html
index d8700d6..d71d4c2 100644
--- a/clang/www/c_status.html
+++ b/clang/www/c_status.html
@@ -44,7 +44,15 @@
<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 @@
</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 @@ conformance.</p>
<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