From 4df47bca15b2d9f5eb3832b05121cdd984c76da1 Mon Sep 17 00:00:00 2001
From: Joseph Myers <joseph@codesourcery.com>
Date: Fri, 11 Feb 2011 18:13:11 +0000
Subject: [PATCH] re PR driver/47678 (missing error message for -I)

	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.

testsuite:
	* gcc.dg/opts-6.c: New test.

From-SVN: r170056
---
 gcc/ChangeLog                 |  8 ++++++++
 gcc/gcc.c                     |  4 ++++
 gcc/opts-common.c             | 12 ++++++------
 gcc/testsuite/ChangeLog       |  5 +++++
 gcc/testsuite/gcc.dg/opts-6.c |  6 ++++++
 5 files changed, 29 insertions(+), 6 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/opts-6.c

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 51920030ab88..0b859c56d6a2 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 1736b091fb11..ec35ed01f6dc 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 e6cb552df131..3c4044a20637 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 fac52940dde8..b9406bab86db 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 000000000000..b0441dc39391
--- /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 } */
-- 
GitLab