[clang] 131bc03 - [C99] Claim partial conformance to IEC 60559 support

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Fri Jun 21 10:33:13 PDT 2024


Author: Aaron Ballman
Date: 2024-06-21T13:28:02-04:00
New Revision: 131bc0390dba1bc21fb8af8e5e8afa78a17d39b9

URL: https://github.com/llvm/llvm-project/commit/131bc0390dba1bc21fb8af8e5e8afa78a17d39b9
DIFF: https://github.com/llvm/llvm-project/commit/131bc0390dba1bc21fb8af8e5e8afa78a17d39b9.diff

LOG: [C99] Claim partial conformance to IEC 60559 support

We intend to support Annex F but there are edge cases we don't handle
properly, such as raising an "invalid" exception when converting some
floating-point values to integers.

This does not add any test coverage as full conformance would require
sufficiently extensive testing that we should consider getting a
third-party test suite such as the one from http://tybor.com/

Added: 
    

Modified: 
    clang/www/c_status.html

Removed: 
    


################################################################################
diff  --git a/clang/www/c_status.html b/clang/www/c_status.html
index 170ab0e1cc321..d8700d6bf3779 100644
--- a/clang/www/c_status.html
+++ b/clang/www/c_status.html
@@ -277,7 +277,25 @@ <h2 id="c99">C99 implementation status</h2>
     <tr>
       <td>IEC 60559 support</td>
       <td>Unknown</td>
-      <td class="unknown" align="center">Unknown</td>
+      <td class="partial" align="center">
+        <details><summary>Partial</summary>
+          Clang supports much of the language requirements for Annex F, but
+          full conformance is only possible to determine when considering the
+          compiler's language support, the C runtime library's math library
+          support, and the target system's floating-point environment support.
+          Clang does not currently raise an "invalid" floating-point exception
+          on certain conversions, does not raise floating-point exceptions for
+          arithmetic constant expressions, and other corner cases. Note, Clang
+          does not define <code>__STDC_IEC_559__</code> because the compiler
+          does not fully conform. However, some C standard library
+          implementations
+          (<a href="https://sourceware.org/git/?p=glibc.git;a=blob;f=include/stdc-predef.h">
+          glibc</a>, <a href="https://git.musl-libc.org/cgit/musl/tree/include/stdc-predef.h">
+          musl</a> will define the macro regardless of compiler support unless
+          the compiler defines <code>__GCC_IEC_559</code>, which Clang does not
+          currently define.
+        </details>
+      </td>
     </tr>
     <tr>
       <td>trailing comma allowed in enum declaration</td>


        


More information about the cfe-commits mailing list