From: Magnus Granberg Date: Wed, 8 Feb 2012 21:37:50 +0000 (+0000) Subject: re PR driver/48524 (spec language does not cover switches with separated form) X-Git-Tag: releases/gcc-4.7.0~500 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5371f7195e823bd69cf7e00444248ff44ce0a3d1;p=thirdparty%2Fgcc.git re PR driver/48524 (spec language does not cover switches with separated form) 2012-02-08 Magnus Granberg 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. From-SVN: r184022 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 59369edfd4a3..e44e4b853d9e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-02-08 Magnus Granberg + + PR driver/48524 + * gcc.c (switch_matches) Support switches with separated form, -D + and -U. + 2012-02-08 Georg-Johann Lay * config/avr/avr.md (SREG_ADDR): Remove constant definition. diff --git a/gcc/gcc.c b/gcc/gcc.c index 315aab321aba..6f98fc9b9d66 100644 --- 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; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index a56acd89411c..58b71d1de715 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-02-08 Magnus Granberg + + PR driver/48524 + * gcc.dg/pr48524.c: New test. + * gcc.dg/pr48524.spec: New spec file for test. + 2012-02-08 Thomas Koenig PR fortran/32380 diff --git a/gcc/testsuite/gcc.dg/pr48524.c b/gcc/testsuite/gcc.dg/pr48524.c new file mode 100644 index 000000000000..d7e46a790631 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr48524.c @@ -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 index 000000000000..8569360ab4ad --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr48524.spec @@ -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} +