Patch from Richard Guenther.
authorRichard Guenther <richard.guenther@uni-tuebingen.de>
Fri, 30 Apr 2004 05:29:23 +0000 (05:29 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Fri, 30 Apr 2004 05:29:23 +0000 (22:29 -0700)
* commom.opt (Wfatal-errors): Add it.
* diagnostic.c (flag_fatal_errors): Define it.
(diagnostic_action_after_output): Check for flag_fatal_errors.
* flags.h (flag_fatal_errors): Declare it.
* opts.c (common_handle_option): Add OPT_Wfatal_errors.
* doc/invoke.texi (Warning Options): Document -Wfatal-errors.

From-SVN: r81323

gcc/ChangeLog
gcc/common.opt
gcc/diagnostic.c
gcc/doc/invoke.texi
gcc/flags.h
gcc/opts.c

index 3e998c8789b458e8b9ed9b62fb62a059b799a4b6..7460ff7fc0922954022722732c82199c92c76f6c 100644 (file)
@@ -1,3 +1,12 @@
+2004-04-29  Richard Guenther  <richard.guenther@uni-tuebingen.de>
+
+       * commom.opt (Wfatal-errors): Add it.
+       * diagnostic.c (flag_fatal_errors): Define it.
+       (diagnostic_action_after_output): Check for flag_fatal_errors.
+       * flags.h (flag_fatal_errors): Declare it.
+       * opts.c (common_handle_option): Add OPT_Wfatal_errors.
+       * doc/invoke.texi (Warning Options): Document -Wfatal-errors.
+
 2004-04-30  Josef Zlomek  <zlomekj@suse.cz>
 
        * gcse.c (remove_reachable_equiv_notes): Delete notes also in
index d7bed08d4ae780aa5d1f588f12d3384425b7f306..92748d330629ff2f3f49813c2f425f28eada49c2 100644 (file)
@@ -76,6 +76,10 @@ Wextra
 Common
 Print extra (possibly unwanted) warnings
 
+Wfatal-errors
+Common
+Exit on the first error occurred
+
 Winline
 Common
 Warn when an inlined function cannot be inlined
index b495d6451c36759757d374059a5f5e7bafaead3b..16afddc1b4befcbad83311e06b447e21236da79d 100644 (file)
@@ -67,6 +67,7 @@ diagnostic_context *global_dc = &global_diagnostic_context;
 with preprocessed source if appropriate.\n\
 See %s for instructions.\n"
 
+int flag_fatal_errors = 0;
 \f
 /* Return a malloc'd string containing MSG formatted a la printf.  The
    caller is responsible for freeing the memory.  */
@@ -264,6 +265,11 @@ diagnostic_action_after_output (diagnostic_context *context,
     case DK_SORRY:
       if (context->abort_on_error)
        real_abort ();
+      if (flag_fatal_errors)
+       {
+         fnotice (stderr, "compilation terminated due to -Wfatal-errors.\n");
+         exit (FATAL_EXIT_CODE);
+       }
       break;
 
     case DK_ICE:
index 7cba693f4c67fa8de9efa5fb3ad8426690c00644..6161c1811ba7a9e2782316d86a0cdff940684943 100644 (file)
@@ -214,7 +214,7 @@ in the following sections.
 -Wconversion  -Wno-deprecated-declarations @gol
 -Wdisabled-optimization  -Wno-div-by-zero  -Wendif-labels @gol
 -Werror  -Werror-implicit-function-declaration @gol
--Wfloat-equal  -Wformat  -Wformat=2 @gol
+-Wfatal-errors  -Wfloat-equal  -Wformat  -Wformat=2 @gol
 -Wno-format-extra-args -Wformat-nonliteral @gol
 -Wformat-security  -Wformat-y2k @gol
 -Wimplicit  -Wimplicit-function-declaration  -Wimplicit-int @gol
@@ -2065,6 +2065,12 @@ machines.
 Warn whenever a comment-start sequence @samp{/*} appears in a @samp{/*}
 comment, or whenever a Backslash-Newline appears in a @samp{//} comment.
 
+@item -Wfatal-errors
+@opindex Wfatal-errors
+This option causes the compiler to abort compilation on the first error
+occurred rather than trying to keep going and printing further error
+messages.
+
 @item -Wformat
 @opindex Wformat
 Check calls to @code{printf} and @code{scanf}, etc., to make sure that
index 472df5426d608f5e769557e927c7b8d1fa013639..b4fc10d7f9037fdcdb9f1b7926226ca8a1091123 100644 (file)
@@ -407,6 +407,10 @@ extern int flag_really_no_inline;
 extern int flag_syntax_only;
 extern int rtl_dump_and_exit;
 
+/* Nonzero if we are exiting on the first error occurred.  */
+
+extern int flag_fatal_errors;
+
 /* Nonzero means we should save auxiliary info into a .X file.  */
 
 extern int flag_gen_aux_info;
index fb04b8fbb41dacecfb923e9786ce547f9f9eee5b..b0ede80e610c2c3f22e6ea69385598fe09bc1962 100644 (file)
@@ -742,6 +742,10 @@ common_handle_option (size_t scode, const char *arg,
       set_Wextra (value);
       break;
 
+    case OPT_Wfatal_errors:
+      flag_fatal_errors = value;
+      break;
+
     case OPT_Winline:
       warn_inline = value;
       break;