https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89864
Iain Sandoe <iains at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Attachment #46110|0 |1 is obsolete| | --- Comment #68 from Iain Sandoe <iains at gcc dot gnu.org> --- Created attachment 46176 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46176&action=edit revised fixincludes patch. So I have an answer about the language implications. Any C++ program containing _Atomic is using a reserved identifier, and so is "ill-formed no diagnostic required", per [lex.name]/3 Therefore, it's standards-conforming for a [C++] implementation to make such identifiers keywords (as GCC does for __attribute__, for example) Apparently, this is intentional extension and is only one of a longer list of such keywords that clang++ accepts. ==== Since, according to the discussion above, this is not a bug in the compiler but rather in using a non-portable extension, perhaps we should not expect any change to the headers. ==== The patch attached include the generated files, and I'd be grateful if folks would test it (right now I have limited access to Darwin test boxen, but it seems to DTRT for me) - I will post to @patches, but leave commit until it's confirmed that it's working.