jyknight added a comment.

In D144889#4156974 <https://reviews.llvm.org/D144889#4156974>, @rsmith wrote:

> Likely because of GCC's perspective on this, the set of C headers provided by 
> GCC, Clang, ICC, etc. has included the complete list of freestanding headers 
> and more or less no others, with some libc implementations providing the full 
> set and some providing just the non-freestanding ones. If we're moving away 
> from that, we'll presumably need a new agreement between compiler folks and 
> libc folks about which headers are provided by whom (and I expect it'll be 
> "compilers provide what the C standard said before this change to 
> freestanding and we pretend the change never happened").

Yeah...this seems like a pretty big divergence from the historical view 
compilers have for "freestanding" mode, and I think the implementation should 
be more along the lines of a "micro-libc", than something built into clang. 
Especially considering the potential future additions e.g. `errno.h`. If we 
look at this as a specification for what to provide in a "micro-libc", having 
such global state is not a major issue, but if we look at this as a "compiler 
builtin" sort of thing (ala traditional freestanding), then it's quite a 
problem.

So, I think the correct solution here is to just document what parts of a 
C2x-conforming "freestanding" Clang provides itself, and what remains for an 
external "mini-libc" implementation to provide.

It probably makes sense for one such external implementation to be provided by 
llvm-libc in the future -- I suspect it should have a separate "freestanding" 
target mode, which would omit all the runtime features like memory allocation 
and threads, and provide just the pure library functionality. But I'd also 
expect such an llvm-libc freestanding mode would also provide a lot more 
functionality than just the minimum requirements -- there's a whole lot more 
"pure library" functions in C than just the ones required in the new 
"freestanding" standard.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144889/new/

https://reviews.llvm.org/D144889

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to