[Bug preprocessor/123273] [13/14 Regression] -E -fdirectives-only reporting error on comments
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Mar 15 06:07:19 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123273
--- Comment #11 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-14 branch has been updated by Jakub Jelinek
<jakub@gcc.gnu.org>:
https://gcc.gnu.org/g:ca7dd9c4cd1e7678f290a3cd92103e3305b52490
commit r14-12398-gca7dd9c4cd1e7678f290a3cd92103e3305b52490
Author: Jakub Jelinek <jakub@redhat.com>
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 <jakub@redhat.com>
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.
(cherry picked from commit 1297b7204aca7fbad741ae02086fa5e134083a5f)
More information about the Gcc-bugs
mailing list