https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64883

--- Comment #7 from Iain Sandoe <iains at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #5)
> (In reply to Iain Sandoe from comment #4)
> > hmm .. so cdefs.h does indeed use __attribute__((no return)) and
> > __attribute__((deprecated)).
> > 
> > (although both are still valid by GCC documentation)
> 
> It's valid but the point is that "noreturn" is not a reserved name in any C
> or POSIX standard, nor in any C++ standard before C++11, so users can
> reasonably expect to be able to define a macro with that name and not get
> problems. In order to support such valid usr code system headers should
> avoid using that name, and should use the __noreturn__ form that is not a
> valid macro name for users to define.
> 
> The point of the new test is to ensure libstdc++ itself doesn't contain this
> kind of bug ... but it fails because darwin has the bug, even though the
> libstdc++ headers no longer have it.

OK, thanks for clarifying.
Perhaps, 

(a) given that the __attribute__((xyzzy)) etc. versions are in pretty wide use
"in the wild".

(b) Section 6.33  of the current GCC manual doesn't really mention the __xxxx__
versions and the examples throughout the section use undecorated versions (the
only example with __xxxx__ seems to be __target__). This section specifically
states the attributes may be identifiers or reserved words.

... we might implement some compatibility warning (again in the future) - or
perhaps at least add a note to the manual.

As far as Darwin's system headers, I guess someone needs to file a radar
against the current edition (but that doesn't solve things for the systems
already out there).

> > What about a fixincludes? (not familiar with what level of stuff is feasible
> > there).
> 
> I think this could be solved with fixincludes, but that seems like something
> for stage 1. For now I might just adjust the test to stop it failing.

for my part, I'm happy with whatever solution you think is reasonable for
stage4 - and we can re-visit this in stage #1.

Reply via email to