aboutsummaryrefslogtreecommitdiff
path: root/libcpp/init.c
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2020-10-19 07:57:50 -0700
committerNathan Sidwell <nathan@acm.org>2020-10-19 08:00:41 -0700
commit5abe05b4331250b6a7798ce87c0a82adc2bd70f3 (patch)
treee0e0014c3fb9a8fdf77f99b7393dd0dd443f9a0d /libcpp/init.c
parent8d31eb8f17fa17f63d46651af1c69fb8eca2d04a (diff)
downloadgcc-5abe05b4331250b6a7798ce87c0a82adc2bd70f3.zip
gcc-5abe05b4331250b6a7798ce87c0a82adc2bd70f3.tar.gz
gcc-5abe05b4331250b6a7798ce87c0a82adc2bd70f3.tar.bz2
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.
Diffstat (limited to 'libcpp/init.c')
-rw-r--r--libcpp/init.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/libcpp/init.c b/libcpp/init.c
index 84c0a9e..454a183 100644
--- a/libcpp/init.c
+++ b/libcpp/init.c
@@ -248,8 +248,10 @@ cpp_create_reader (enum c_lang lang, cpp_hash_table *table,
/* Set up static tokens. */
pfile->avoid_paste.type = CPP_PADDING;
pfile->avoid_paste.val.source = NULL;
- pfile->eof.type = CPP_EOF;
- pfile->eof.flags = 0;
+ pfile->avoid_paste.src_loc = 0;
+ pfile->endarg.type = CPP_EOF;
+ pfile->endarg.flags = 0;
+ pfile->endarg.src_loc = 0;
/* Create a token buffer for the lexer. */
_cpp_init_tokenrun (&pfile->base_run, 250);