<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/63089>63089</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang is missing GCC builtins necessary to work with recent libstdc++
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
GabrielRavier
</td>
</tr>
</table>
<pre>
Trying to use trunk Clang with the current trunk libstdc++ and including pretty much any header (e.g. `<cmath>`) results in errors like these:
```cpp
In file included from <source>:1:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/14.0.0/../../../../include/c++/14.0.0/cmath:3701:
In file included from /opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/14.0.0/../../../../include/c++/14.0.0/bits/specfun.h:44:
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/14.0.0/../../../../include/c++/14.0.0/limits:2125:16: error: use of undeclared identifier '__builtin_huge_valq'
2125 | { return __builtin_huge_valq(); }
| ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/14.0.0/../../../../include/c++/14.0.0/limits:2129:16: error: use of undeclared identifier '__builtin_nanq'
2129 | { return __builtin_nanq(""); }
| ^
/opt/compiler-explorer/gcc-snapshot/lib/gcc/x86_64-linux-gnu/14.0.0/../../../../include/c++/14.0.0/limits:2133:16: error: use of undeclared identifier '__builtin_nansq'
2133 | { return __builtin_nansq(""); }
| ^
3 errors generated.
Compiler returned: 1
```
(see also [on Godbolt](https://godbolt.org/z/4qr3bbrMd))
I don't know if this might also be considered a bug in GCC itself, but I'd say Clang might as well just implement the builtins if libstdc++ wants to use them.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzUlktv2zgQxz8NfRlYkElZj4MOsVMFOexlsfeAFMcSG4pU-Yjj_fQLWkpaZ3fRAr20giDbGs3rxxH_5t6rwSC2ZH8g-_sNj2G0rn3gwinUf_IXhW4jrLy0f7mLMgMEC9EjBBfNMxw1NwOcVRghjAh9dA5NWI1aCR9kT-iB0ANwI0GZXkeZoswOQ7jAFPsRuLnAiFyiA0JrzIYMSJkTduwnHkbCPqVftAGHPurgQRlA56zzoNUzpsQeCbsj-T3J365lvpz9PC93Hg2clMa1BJRwcnYCwo7eRtdjysLudu9h_udx2tk5ENr1dpqVRrfF11lbh47Qbuj7rTd89qNNj2gllpuEdq91-VQWW61MfN0OJhLa7Yosz3JCuyz792XNmhIt9L51WKncsSr_LeoVKnhCOz9jf4omS6UXxdf1-hVK1GpKRbI7uqP7NAclYXfLkKUvad7tCaKR2GvuUIKSaII6qevIVk9PIiodlHka44BPL1x_IbRa-oMUEkh1hOUg1QEchugM_KdbTWhD2AFIdb8GWN2OQPafflFmzc8wM9zc4mq-h2vxqAml1_O348XYT_LyN8AY-wFg_keIfTjeAbK3DXdAg44HlNliOK5A15QoUyu7D3vwzcZMa48IXHsLZH-wBh6sFFYHsr8ntB5DmBMjQru0Cosps24gtPub0K744pgQ7g-ZeqDNt5EfQVpDaBXg2dgzqBOEUXmY1DCGJZ9A6K3xSmLCy0HEIWnJw_EIKnjUJ0KPIGKAR0IrCZ5fVn1bY3g4o9bwOfoAapo1TletGxFWzj5lvVW9MzfBv2vmiFO2kS2TDWv4BttdWe_rXV4UzWZsy7zBkslGlPW-5EwKWYuaFrloOEfR841qaU5ZXuZsVxZ50WTVacfyqsp7Xp-qhiIpcpy40pnWL1OitlHeR2xLltfNRnOB2l91nlKDZ7ga0zzs7zeuTT5bEQdPilwrH_zXKEEFje3C4orU-6ThCdx75wZ79J67S2r2bN3z8q_AYZ8g3UDZRKfbDyutwhhF1tspvSn65e1jOzv7Gfv0Yl6rTUJy7eafAAAA__-PaKGn">