Skip to content

Commit 918ef31

Browse files
committed
[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.
1 parent f0b9309 commit 918ef31

File tree

1 file changed

+13
-5
lines changed

1 file changed

+13
-5
lines changed

clang/www/c_status.html

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,15 @@ <h1>C Support in Clang</h1>
4444
<tr>
4545
<td><a href="#c99">C99</a></td>
4646
<td><tt>-std=c99</tt></td>
47-
<td class="unknown" align="center">Almost certainly</td>
47+
<td class="full" align="center">Clang 17</td>
48+
<!-- We claim full conformance to C99 despite there being a few entries marked
49+
"partial". The partial entries do not impact whether we conform to the
50+
letter of the standard, but they are for circumstances where the missing
51+
support is thought to only be in edge cases or where we believe we could
52+
make further efforts to significantly improve the support. While we list
53+
Clang 17 as the version of Clang which fully supports C99, support for
54+
the language mode was largely complete in earlier versions of Clang going
55+
back to 3.0. -->
4856
</tr>
4957
<tr>
5058
<td><a href="#c11">C11</a></td>
@@ -63,9 +71,9 @@ <h1>C Support in Clang</h1>
6371
</tr>
6472
</table>
6573

66-
<p>The implementation status for C99, C11, C17, and C23 are currently under
67-
investigation. Any proposal whose status in Clang is currently unknown
68-
will be marked in <span class="unknown">magenta</span>.</p>
74+
<p>The implementation status for C11 and C23 are currently under investigation.
75+
Any proposal whose status in Clang is currently unknown will be marked in
76+
<span class="unknown">magenta</span>.</p>
6977

7078
<p>The Clang community is continually striving to improve C standards
7179
compliance between releases by submitting and tracking
@@ -83,7 +91,7 @@ <h2 id="c89">C89 implementation status</h2>
8391

8492
<h2 id="c99">C99 implementation status</h2>
8593

86-
<p>Clang implements a significant portion of the ISO 9899:1999 (C99) standard, but the status of individual proposals is still under investigation.</p>
94+
<p>Clang implements all of the ISO 9899:1999 (C99) standard.</p>
8795
<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>
8896
<!-- https://www.open-std.org/jtc1/sc22/wg14/www/docs/n874.htm contains the
8997
final editor's report of what's been added to C99, but it includes more

0 commit comments

Comments
 (0)