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]>

Reply via email to