From: Jakub Jelinek Date: Mon, 4 Sep 2000 07:51:58 +0000 (+0200) Subject: cpplex.c (ON_REST_ARG): Check VAR_ARGS flag of current context, use posn - 1 to index... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=29844fa7c724106adef78cb758ae1a57461758ae;p=gcc.git cpplex.c (ON_REST_ARG): Check VAR_ARGS flag of current context, use posn - 1 to index into tokens array. * cpplex.c (ON_REST_ARG): Check VAR_ARGS flag of current context, use posn - 1 to index into tokens array. (maybe_paste_with_next): Adjust caller. * gcc.dg/cpp/paste8.c: New test. From-SVN: r36128 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6d6474de515..2e23d6ed45b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2000-09-04 Jakub Jelinek + + * cpplex.c (ON_REST_ARG): Check VAR_ARGS flag of current context, + use posn - 1 to index into tokens array. + (maybe_paste_with_next): Adjust caller. + 2000-09-03 Geoff Keating * invoke.texi: Document the -mvxworks option for rs6000 ELF. diff --git a/gcc/cpplex.c b/gcc/cpplex.c index 37d1de8c440..ab5a987d972 100644 --- a/gcc/cpplex.c +++ b/gcc/cpplex.c @@ -202,8 +202,8 @@ TOKEN_LEN (token) #define CURRENT_CONTEXT(pfile) ((pfile)->contexts + (pfile)->cur_context) #define ON_REST_ARG(c) \ (((c)->flags & VAR_ARGS) \ - && (c)->u.list->tokens[(c)->posn].val.aux \ - == (unsigned int) ((c)->u.list->paramc - 1)) + && ((c)-1)->u.list->tokens[((c)-1)->posn - 1].val.aux \ + == (unsigned int) (((c)-1)->u.list->paramc - 1)) #define ASSIGN_FLAGS_AND_POS(d, s) \ do {(d)->flags = (s)->flags & (PREV_WHITE | BOL | PASTE_LEFT); \ @@ -2773,7 +2773,7 @@ maybe_paste_with_next (pfile, token) the special extended semantics (see above). */ if (token->type == CPP_COMMA && IS_ARG_CONTEXT (CURRENT_CONTEXT (pfile)) - && ON_REST_ARG (CURRENT_CONTEXT (pfile) - 1)) + && ON_REST_ARG (CURRENT_CONTEXT (pfile))) /* no warning */; else cpp_warning (pfile, diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 58e1aea0e0a..202ad8f48b9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2000-09-04 Jakub Jelinek + + * gcc.dg/cpp/paste8.c: New test. + 2000-09-01 Alexandre Oliva * gcc.c-torture/compile/20000827-1.c: New test. diff --git a/gcc/testsuite/gcc.dg/cpp/paste8.c b/gcc/testsuite/gcc.dg/cpp/paste8.c new file mode 100644 index 00000000000..dc5fe8316a0 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/paste8.c @@ -0,0 +1,15 @@ +/* { dg-do preprocess } */ +/* { dg-options "" } */ + +int foo(int, ...); + +#define a(x, y...) foo(x, ##y) +a(1) +a(1, 2, 3) +#define b(x, y, z...) foo(x, ##y) +b(1, 2, 3) /* { dg-warning "pasting would not" } */ +#define c(x, y, z...) foo(x, ##z) +c(1, 2) +c(1, 2, 3) +#define d(x) foo(##x) /* { dg-warning "nothing can be pasted" } */ +d(1)