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

--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <[email protected]>:

https://gcc.gnu.org/g:1297b7204aca7fbad741ae02086fa5e134083a5f

commit r16-7173-g1297b7204aca7fbad741ae02086fa5e134083a5f
Author: Jakub Jelinek <[email protected]>
Date:   Fri Jan 30 10:56:10 2026 +0100

    libcpp: Fix up comment handling in -fdirectives-only preprocessing
[PR123273]

    Back in 2020 Nathan rewrote the -E -fdirectives-only preprocessing.
    In PR103130 a year and half later I've fixed the handling of comments
    so that /* \*/ is considered as full comment even when * is escaped,
    to match the normal preprocessing.
    The following testcases shows further bugs in the comment handling.
    One is that /* *\/ should not be considered as full comment (i.e.
    when the / after * is escaped).  And another one is that the code
    was treating any number of backslashes as escape, which is wrong,
    only a single backslash is an escape, two backslashes preprocess as
    one backslash, three as one backslash and one escape, etc.
    So, while /* *\
    / is a full comment, /* *\\
    / or /* *\\\\\\\\\\\\\
    / is not.

    2026-01-30  Jakub Jelinek  <[email protected]>

            PR preprocessor/123273
            * lex.cc (cpp_directive_only_process): Only go to done_comment
            for '/' if star is true and esc is false.  When seeing '\\' with
            esc set to true, clear esc as well as star instead of keeping esc
            set.

            * c-c++-common/cpp/dir-only-10.c: New test.
            * c-c++-common/cpp/dir-only-11.c: New test.

Reply via email to