]> git.ipfire.org Git - thirdparty/gcc.git/commit - libcpp/internal.h
preprocessor: Fix non-fn fn-like macro at EOF [PR97471]
authorNathan Sidwell <nathan@acm.org>
Mon, 19 Oct 2020 14:57:50 +0000 (07:57 -0700)
committerNathan Sidwell <nathan@acm.org>
Mon, 19 Oct 2020 15:00:41 +0000 (08:00 -0700)
commit5abe05b4331250b6a7798ce87c0a82adc2bd70f3
treee0e0014c3fb9a8fdf77f99b7393dd0dd443f9a0d
parent8d31eb8f17fa17f63d46651af1c69fb8eca2d04a
preprocessor: Fix non-fn fn-like macro at EOF [PR97471]

We inject EOF tokens between macro argument lists, but had
confused/stale logic in the non-fn invocation.  Renamed the magic
'eof' token, as it's now only used for macro argument termination.
Always rewind the non-OPEN_PAREN token.

libcpp/
* internal.h (struct cpp_reader): Rename 'eof' field to 'endarg'.
* init.c (cpp_create_reader): Adjust.
* macro.c (collect_args): Use endarg for separator.  Always rewind
in the not-fn case.
gcc/testsuite/
* c-c++-common/cpp/pr97471.c: New.
gcc/testsuite/c-c++-common/cpp/pr97471.c [new file with mode: 0644]
libcpp/init.c
libcpp/internal.h
libcpp/macro.c