From a7f36da37989019104e199ab78826bd929142818 Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Sun, 1 Jun 2003 14:55:15 -0400 Subject: [PATCH] cppmacro.c (warn_of_redefinition): Handle cases where the two definitions have different numbers of tokens. * cppmacro.c (warn_of_redefinition): Handle cases where the two definitions have different numbers of tokens. * gcc.dg/cpp/redef3.c: New file. From-SVN: r67307 --- gcc/ChangeLog | 5 +++++ gcc/cppmacro.c | 10 ++++++---- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/cpp/redef3.c | 21 +++++++++++++++++++++ 4 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/cpp/redef3.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 290ee8000ee..654e36df1d8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-05-29 DJ Delorie + + * cppmacro.c (warn_of_redefinition): Handle cases where the two + definitions have different numbers of tokens. + 2003-06-01 Andreas Jaeger * gen-protos.c (main): Readd unused attribute for argc. diff --git a/gcc/cppmacro.c b/gcc/cppmacro.c index f77f6b36837..eba8c0032a3 100644 --- a/gcc/cppmacro.c +++ b/gcc/cppmacro.c @@ -1275,10 +1275,12 @@ warn_of_redefinition (pfile, node, macro2) if (CPP_OPTION (pfile, traditional)) return _cpp_expansions_different_trad (macro1, macro2); - if (macro1->count == macro2->count) - for (i = 0; i < macro1->count; i++) - if (!_cpp_equiv_tokens (¯o1->exp.tokens[i], ¯o2->exp.tokens[i])) - return true; + if (macro1->count != macro2->count) + return true; + + for (i = 0; i < macro1->count; i++) + if (!_cpp_equiv_tokens (¯o1->exp.tokens[i], ¯o2->exp.tokens[i])) + return true; return false; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7b6632c8a4c..ee9f802816c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-06-01 Loren James Rittle + + * gcc.dg/cpp/redef3.c: New file. + 2003-06-01 Eric Botcazou * gcc.dg/i386-loop-3.c: New test. diff --git a/gcc/testsuite/gcc.dg/cpp/redef3.c b/gcc/testsuite/gcc.dg/cpp/redef3.c new file mode 100644 index 00000000000..78ee71e6598 --- /dev/null +++ b/gcc/testsuite/gcc.dg/cpp/redef3.c @@ -0,0 +1,21 @@ +/* Test for redefining macros with mismatch token count (and the oddity). */ + +/* { dg-do preprocess } */ +/* { dg-options "-DC -DD=1 -DE" } */ + +#define A +#define A 1 +#define B 2 3 +#define B 2 +#define C 1 +#define D 1 2 +#define E + +/* { dg-warning "redefined" "redef A" { target *-*-* } 7 } + { dg-warning "redefined" "redef B" { target *-*-* } 9 } + { dg-warning "redefined" "redef D" { target *-*-* } 11 } + { dg-warning "redefined" "redef E" { target *-*-* } 12 } + { dg-warning "previous" "prev def A" { target *-*-* } 6 } + { dg-warning "previous" "prev def B" { target *-*-* } 8 } + { dg-warning "previous" "prev def D/E" { target *-*-* } 0 } +*/ -- 2.30.2