aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/gcc.c4
-rw-r--r--gcc/opts-common.c12
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/opts-6.c6
5 files changed, 29 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5192003..0b859c5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2011-02-11 Joseph Myers <joseph@codesourcery.com>
+
+ PR driver/47678
+ * gcc.c (main): Do not compile inputs if there were errors in
+ option handling.
+ * opts-common.c (read_cmdline_option): Check for wrong language
+ after other error checks.
+
2011-02-11 Nathan Froyd <froydnj@codesourcery.com>
* cgraph.c: Fix comment typos.
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 1736b09..ec35ed0 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -6597,6 +6597,9 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
if (n_infiles == added_libraries)
fatal_error ("no input files");
+ if (seen_error ())
+ goto out;
+
/* Make a place to record the compiler output file names
that correspond to the input files. */
@@ -6864,6 +6867,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"
printf ("%s\n", bug_report_url);
}
+ out:
return (signal_count != 0 ? 2
: seen_error () ? (pass_exit_codes ? greatest_status : 1)
: 0);
diff --git a/gcc/opts-common.c b/gcc/opts-common.c
index e6cb552..3c4044a 100644
--- a/gcc/opts-common.c
+++ b/gcc/opts-common.c
@@ -960,12 +960,6 @@ read_cmdline_option (struct gcc_options *opts,
return;
}
- if (decoded->errors & CL_ERR_WRONG_LANG)
- {
- handlers->wrong_lang_callback (decoded, lang_mask);
- return;
- }
-
if (decoded->errors & CL_ERR_MISSING_ARG)
{
if (option->missing_argument_error)
@@ -1012,6 +1006,12 @@ read_cmdline_option (struct gcc_options *opts,
return;
}
+ if (decoded->errors & CL_ERR_WRONG_LANG)
+ {
+ handlers->wrong_lang_callback (decoded, lang_mask);
+ return;
+ }
+
gcc_assert (!decoded->errors);
if (!handle_option (opts, opts_set, decoded, lang_mask, DK_UNSPECIFIED,
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index fac5294..b9406ba 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2011-02-11 Joseph Myers <joseph@codesourcery.com>
+
+ PR driver/47678
+ * gcc.dg/opts-6.c: New test.
+
2011-02-11 Jakub Jelinek <jakub@redhat.com>
PR debug/47684
diff --git a/gcc/testsuite/gcc.dg/opts-6.c b/gcc/testsuite/gcc.dg/opts-6.c
new file mode 100644
index 0000000..b0441dc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/opts-6.c
@@ -0,0 +1,6 @@
+/* Missing option arguments take precedence over wrong-language
+ warnings. */
+/* { dg-do compile } */
+/* { dg-options "-ftemplate-depth=" } */
+
+/* { dg-error "missing argument" "" { target *-*-* } 0 } */