[Bug preprocessor/114436] #pragma GCC system_header vs. _Pragma("GCC system_header")
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Oct 14 13:53:20 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114436
--- Comment #4 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Lewis Hyatt <lhyatt@gcc.gnu.org>:
https://gcc.gnu.org/g:8c56d697b35d3d2ef802d068cad6b3bd026a2a1a
commit r15-4331-g8c56d697b35d3d2ef802d068cad6b3bd026a2a1a
Author: Lewis Hyatt <lhyatt@gmail.com>
Date: Fri Mar 22 15:42:43 2024 -0400
libcpp: Fix _Pragma("GCC system_header") [PR114436]
_Pragma("GCC system_header") currently takes effect only partially. It does
succeed in updating the line_map, so that checks like in_system_header_at()
return correctly, but it does not update pfile->buffer->sysp. One result
is
that a subsequent #include does not set up the system header state properly
for the newly included file, as pointed out in the PR. Fix by propagating
the new system header state back to the buffer after processing the pragma.
libcpp/ChangeLog:
PR preprocessor/114436
* directives.cc (destringize_and_run): If the _Pragma changed the
buffer system header state (e.g. because it was "GCC
system_header"), propagate that change back to the actual buffer
too.
gcc/testsuite/ChangeLog:
PR preprocessor/114436
* c-c++-common/cpp/pragma-system-header-1.h: New test.
* c-c++-common/cpp/pragma-system-header-2.h: New test.
* c-c++-common/cpp/pragma-system-header.c: New test.
More information about the Gcc-bugs
mailing list