diff options
author | Danny Smith <dannysmith@users.sourceforge.net> | 2006-08-25 00:24:10 +0000 |
---|---|---|
committer | Danny Smith <dannysmith@gcc.gnu.org> | 2006-08-25 00:24:10 +0000 |
commit | a073516d43b79060b506f67083d291832c706a93 (patch) | |
tree | b944faa7ffa62104907fd4354141ca7f2270088c /gcc | |
parent | df1195dbc5aac289e48e4f0a59b1fa3658ce2bb1 (diff) | |
download | gcc-a073516d43b79060b506f67083d291832c706a93.zip gcc-a073516d43b79060b506f67083d291832c706a93.tar.gz gcc-a073516d43b79060b506f67083d291832c706a93.tar.bz2 |
re PR driver/28528 (C language extensions override -x in C++ driver)
PR driver/28528
* g++spec.c (lang_specific_driver): Always check if we need to
swallow a space-separated arg to '-x'.
* lang-specs.h: Don't create ouput files for '-xc++-header'
if -fsyntax-only.
From-SVN: r116392
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/cp/g++spec.c | 26 | ||||
-rw-r--r-- | gcc/cp/lang-specs.h | 2 |
3 files changed, 22 insertions, 14 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e1ad1bf..c3bb4f3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,11 @@ +2006-08-24 Danny Smith <dannysmith@users.sourceforge.net> + + PR driver/28528 + * g++spec.c (lang_specific_driver): Always check if we need to + swallow a space-separated arg to '-x'. + * lang-specs.h: Don't create ouput files for '-xc++-header' + if -fsyntax-only. + 2006-08-23 Jason Merrill <jason@redhat.com> PR c++/27714 diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c index 7e10bc9..b58fdcd 100644 --- a/gcc/cp/g++spec.c +++ b/gcc/cp/g++spec.c @@ -149,19 +149,19 @@ lang_specific_driver (int *in_argc, const char *const **in_argv, saw_verbose_flag = 1; else if (strncmp (argv[i], "-x", 2) == 0) { - if (library == 0) - { - const char * arg; - if (argv[i][2] != '\0') - arg = argv[i]+2; - else if (argv[i+1] != NULL) - arg = argv[i+1]; - else /* Error condition, message will be printed later. */ - arg = ""; - if (strcmp (arg, "c++") == 0 - || strcmp (arg, "c++-cpp-output") == 0) - library = 1; - } + const char * arg; + if (argv[i][2] != '\0') + arg = argv[i]+2; + else if ((argv[i+1]) != NULL) + /* We need to swallow arg on next loop. */ + quote = arg = argv[i+1]; + else /* Error condition, message will be printed later. */ + arg = ""; + if (library == 0 + && (strcmp (arg, "c++") == 0 + || strcmp (arg, "c++-cpp-output") == 0)) + library = 1; + saw_speclang = 1; } /* Arguments that go directly to the linker might be .o files, diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h index 4718ece..e16d2f4 100644 --- a/gcc/cp/lang-specs.h +++ b/gcc/cp/lang-specs.h @@ -43,7 +43,7 @@ Boston, MA 02110-1301, USA. */ cc1plus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.ii} %{!save-temps:%g.ii}}\ %{!save-temps:%{!no-integrated-cpp:%(cpp_unique_options)}}\ %(cc1_options) %2 %{+e1*}\ - -o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}", + %{!fsyntax-only:-o %g.s %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}%V}}}}", CPLUSPLUS_CPP_SPEC, 0, 0}, {"@c++", "%{E|M|MM:cc1plus -E %(cpp_options) %2 %(cpp_debug_options)}\ |