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