https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64332
--- Comment #5 from Azat <a3at.mail at gmail dot com> --- On Tue, Dec 16, 2014 at 05:16:41PM +0000, manu at gcc dot gnu.org wrote: > The C FE does not point to __constructor (3:1 vs 3:19), thus it doesn't > realize > this comes from a macro expansion, thus (in your testcase) the system_header > is > applied. The C++ FE sees that the attribute actually appears in 1:50 and not > 3:19, thus in your testcase the pragma system_header does not apply. Hm.. good to know, thanks for pointing me out! > Whether the correct behavior is that the system_header applies to the > definition or to the expansion location, I am not sure. However, the bad > location of the C FE is clearly a bug. Maybe gcc will behave like clang in this case?