preprocessor: Further fix for EOF in macro args [PR97471]

Nathan Sidwell nathan@acm.org
Tue Oct 20 15:01:27 GMT 2020


My previous attempt at fixing this was incorrect.  The problem occurs
earlier in that _cpp_lex_direct processes the unwinding EOF needs in
collect_args mode.  This patch changes it not to do that, in the same
way as directive parsing works.  Also collect_args shouldn't push_back
such fake EOFs, and neither should funlike_invocation_p.

         libcpp/
         * lex.c (_cpp_lex_direct): Do not complete EOF processing when
         parsing_args.
         * macro.c (collect_args): Do not unwind fake EOF.
         (funlike_invocation_p): Do not unwind fake EOF.
         (cpp_context): Replace abort with gcc_assert.
         gcc/testsuite/
         * gcc.dg/cpp/endif.c: Move to ...
         * c-c++-common/cpp/endif.c: ... here.
         * gcc.dg/cpp/endif.h: Move to ...
         * c-c++-common/cpp/endif.h: ... here.
         * c-c++-common/cpp/eof-2.c: Adjust diagnostic.
         * c-c++-common/cpp/eof-3.c: Adjust diagnostic.

pushing to trunk

-- 
Nathan Sidwell
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 97471-2.diff
Type: text/x-patch
Size: 4307 bytes
Desc: not available
URL: <https://gcc.gnu.org/pipermail/gcc-patches/attachments/20201020/5e18f627/attachment-0001.bin>


More information about the Gcc-patches mailing list