https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124153
--- Comment #3 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Nathaniel Shead <[email protected]>: https://gcc.gnu.org/g:deba30681df43bab1a62e0cddd280e382b7c3381 commit r16-7628-gdeba30681df43bab1a62e0cddd280e382b7c3381 Author: Nathaniel Shead <[email protected]> Date: Sat Feb 21 22:32:25 2026 +1100 libcpp: Fix ICE with directives-only and cpp_maybe_module_directive [PR124153] When doing directives-only processing (-E -fdirectives-only, or -M) we crash if we hit an unexpected CPP_PRAGMA_EOL because we 'know' we're in a module directive but the in_deferred_pragma flag is no longer set. Fixed by undoing the "finished a module directive" behaviour within cpp_maybe_module_directive if we're bailing due to an ill-formed peeked token. PR c++/124153 libcpp/ChangeLog: * lex.cc (cpp_maybe_module_directive): Set in_deferred_pragma and eol when we see an unexpected CPP_PRAGMA_EOL. gcc/testsuite/ChangeLog: * g++.dg/modules/cpp-22.C: New test. Signed-off-by: Nathaniel Shead <[email protected]> Reviewed-by: Jason Merrill <[email protected]>
