aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorZack Weinberg <zack@wolery.cumb.org>2000-03-01 19:12:18 +0000
committerZack Weinberg <zack@gcc.gnu.org>2000-03-01 19:12:18 +0000
commitfbb886eb3867db7f93c0f1a328911d5b308b8680 (patch)
tree45dc3801feb7b5799c53891d276d988e0de65f2d /gcc
parent2bfa73e4182ed0a3ed7c7e7c80491d0bc8f511fc (diff)
downloadgcc-fbb886eb3867db7f93c0f1a328911d5b308b8680.zip
gcc-fbb886eb3867db7f93c0f1a328911d5b308b8680.tar.gz
gcc-fbb886eb3867db7f93c0f1a328911d5b308b8680.tar.bz2
cpphash.c (collect_expansion): Trim trailing white space from macro definitions...
* cpphash.c (collect_expansion): Trim trailing white space from macro definitions, but don't go past the last insertion point. * gcc.dg/cpp-redef.c: New test. From-SVN: r32283
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/cpphash.c6
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/cpp-redef.c19
4 files changed, 35 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 38a25c5..29dee24 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2000-03-01 Zack Weinberg <zack@wolery.cumb.org>
+
+ * cpphash.c (collect_expansion): Trim trailing white space
+ from macro definitions, but don't go past the last insertion
+ point.
+
Wed Mar 1 12:14:31 MET 2000 Jan Hubicka <jh@suse.cz>
* i386.md (mulqi3): New pattern.
diff --git a/gcc/cpphash.c b/gcc/cpphash.c
index c5c20ac..d44bdcb 100644
--- a/gcc/cpphash.c
+++ b/gcc/cpphash.c
@@ -487,6 +487,12 @@ collect_expansion (pfile, arglist)
else if (last_token == PASTE)
cpp_error (pfile, "`##' at end of macro definition");
+ /* Trim trailing white space from definition. */
+ here = CPP_WRITTEN (pfile);
+ while (here > last && is_hspace (pfile->token_buffer [here-1]))
+ here--;
+ CPP_SET_WRITTEN (pfile, here);
+
CPP_NUL_TERMINATE (pfile);
len = CPP_WRITTEN (pfile) - start + 1;
exp = xmalloc (len + 4); /* space for no-concat markers at either end */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 10a4b14..f51ec94 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2000-03-01 Zack Weinberg <zack@wolery.cumb.org>
+
+ * gcc.dg/cpp-redef.c: New test.
+
2000-02-29 Nathan Sidwell <nathan@codesourcery.com>
* g++.old-deja/g++.pt/unify7.C: New test.
diff --git a/gcc/testsuite/gcc.dg/cpp-redef.c b/gcc/testsuite/gcc.dg/cpp-redef.c
new file mode 100644
index 0000000..a5fe2ba
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/cpp-redef.c
@@ -0,0 +1,19 @@
+/* Test for redefining macros with insignificant (i.e. whitespace)
+ differences. */
+
+/* { dg-do preprocess } */
+
+#define foo bar
+#define /* x */ foo /* x */ bar /* x */
+
+#define quux(thud) a one and a thud and a two
+#define /**/ quux( thud ) /**/ a one and a /**/ thud /**/ and /**/ a two
+#define quux(thud) a one and a thud and a two /* bah */
+
+/* { dg-bogus "redefined" "foo redefined" { target *-*-* } 7 } */
+/* { dg-bogus "redefined" "quux redefined" { target *-*-* } 10 } */
+/* { dg-bogus "redefined" "quux redefined" { target *-*-* } 11 } */
+
+/* { dg-bogus "previous def" "foo prev def" { target *-*-* } 6 } */
+/* { dg-bogus "previous def" "quux prev def" { target *-*-* } 9 } */
+/* { dg-bogus "previous def" "quux prev def" { target *-*-* } 10 } */