OSDN Git Service

2012-02-08 Magnus Granberg <zorry@gentoo.org>
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Feb 2012 21:37:50 +0000 (21:37 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Feb 2012 21:37:50 +0000 (21:37 +0000)
PR driver/48524
* gcc.c (switch_matches) Support switches with separated form, -D
and -U.

testsuite:
* gcc.dg/pr48524.c: New test.
* gcc.dg/pr48524.spec: New spec file for test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@184022 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gcc.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr48524.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/pr48524.spec [new file with mode: 0644]

index 59369ed..e44e4b8 100644 (file)
@@ -1,3 +1,9 @@
+2012-02-08  Magnus Granberg  <zorry@gentoo.org>
+
+       PR driver/48524
+       * gcc.c (switch_matches) Support switches with separated form, -D
+       and -U.
+
 2012-02-08  Georg-Johann Lay  <avr@gjlay.de>
 
        * config/avr/avr.md (SREG_ADDR): Remove constant definition.
index 315aab3..6f98fc9 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -5455,6 +5455,21 @@ switch_matches (const char *atom, const char *end_atom, int starred)
        && check_live_switch (i, plen))
       return true;
 
+    /* Check if a switch with separated form matching the atom.
+       We check -D and -U switches. */
+    else if (switches[i].args != 0)
+      {
+       if ((*switches[i].part1 == 'D' || *switches[i].part1 == 'U')
+           && *switches[i].part1 == atom[0])
+         {
+           if (!strncmp (switches[i].args[0], &atom[1], len - 1)
+               && (starred || (switches[i].part1[1] == '\0'
+                               && switches[i].args[0][len - 1] == '\0'))
+               && check_live_switch (i, (starred ? 1 : -1)))
+             return true;
+         }
+      }
+
   return false;
 }
 
index a56acd8..58b71d1 100644 (file)
@@ -1,3 +1,9 @@
+2012-02-08  Magnus Granberg  <zorry@gentoo.org>
+
+       PR driver/48524
+       * gcc.dg/pr48524.c: New test.
+       * gcc.dg/pr48524.spec: New spec file for test.
+
 2012-02-08  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/32380
diff --git a/gcc/testsuite/gcc.dg/pr48524.c b/gcc/testsuite/gcc.dg/pr48524.c
new file mode 100644 (file)
index 0000000..d7e46a7
--- /dev/null
@@ -0,0 +1,6 @@
+/* { dg-do preprocess } */
+/* { dg-options "-specs=${srcdir}/gcc.dg/pr48524.spec -D_TEST_D" } */
+# ifdef _FOO
+# error works /* { dg-error "works" } */
+# endif
+
diff --git a/gcc/testsuite/gcc.dg/pr48524.spec b/gcc/testsuite/gcc.dg/pr48524.spec
new file mode 100644 (file)
index 0000000..8569360
--- /dev/null
@@ -0,0 +1,5 @@
+*cpp_options:
+%(cpp_unique_options) %1 %{m*} %{std*&ansi&trigraphs} %{W*&pedantic*} %{w}\
+ %{f*} %{g*:%{!g0:%{g*} %{!fno-working-directory:-fworking-directory}}} %{O*}\
+ %{undef} %{save-temps*:-fpch-preprocess} %{D_TEST_D:-D_FOO}
+