zygoloid wrote:

> Background: it's not clear to me which C Standard Library headers Clang 
> should or should not provide,

Historically, the easiest line to draw has been that we aim to provide the 
freestanding headers. This matches GCC's [documented 
position](https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Standards.html#C-Language:~:text=GCC%20aims%20towards%20being%20usable%20as%20a%20conforming%20freestanding%20implementation%2C%20or%20as%20the%20compiler%20for%20a%20conforming%20hosted%20implementation.)
 that it provides a complete conforming freestanding implementation, or the 
compiler for a hosted implementation.

For some reason, WG21 has trampled over that meaning of "freestanding" and we 
no longer have such a separation for C++, but it still exists for C, so it 
makes sense to still follow it there. And `<tgmath.h>` isn't a freestanding 
header.

There are sometimes other reasons why we might feel like we should be providing 
a header rather than leaving it to the C standard library implementation, and 
in particular `<tgmath.h>` used to be unimplementable in standard C, which was 
one such reason (we implemented it with `__attribute__((overloadable))` before 
`_Generic` existed). But that's not been true for a long time. Another such 
reason is that the system header for the target doesn't work with Clang, which 
sounds like it is the case for AIX, so that's a good reason to keep it :)

I wonder if we can put it into an AIX-only (plus whatever other targets still 
need it) include directory, though, so we only find and use it on the targets 
where it's necessary?

https://github.com/llvm/llvm-project/pull/135236
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to