OSDN Git Service

PR driver/22600
authorreichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Mar 2006 19:36:22 +0000 (19:36 +0000)
committerreichelt <reichelt@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 22 Mar 2006 19:36:22 +0000 (19:36 +0000)
* system.h (ICE_EXIT_CODE): New macro.
* diagnostic.c (diagnostic_count_diagnostic): Exit with ICE_EXIT_CODE.
(diagnostic_action_after_output): Likewise.
* gcc.c (fatal_ice): New function.
(execute): Use it instead of fatal.
(fancy_abort): Likewise.
* doc/invoke.texi (-pass-exit-codes): Document return code for ICEs.

* fortran/error.c (gfc_fatal_error): Return ICE_EXIT_CODE instead of 4.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@112292 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/diagnostic.c
gcc/doc/invoke.texi
gcc/fortran/ChangeLog
gcc/fortran/error.c
gcc/gcc.c
gcc/system.h

index 1d1e5b5..fe517ce 100644 (file)
@@ -1,3 +1,14 @@
+2006-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR driver/22600
+       * system.h (ICE_EXIT_CODE): New macro.
+       * diagnostic.c (diagnostic_count_diagnostic): Exit with ICE_EXIT_CODE.
+       (diagnostic_action_after_output): Likewise.
+       * gcc.c (fatal_ice): New function.
+       (execute): Use it instead of fatal.
+       (fancy_abort): Likewise.
+       * doc/invoke.texi (-pass-exit-codes): Document return code for ICEs.
+
 2006-03-22  Jeff Law  <law@redhat.com>
 
        * loop-unroll.c (analyze_iv_to_split_insn): Handle
index b671b1a..3691477 100644 (file)
@@ -188,7 +188,7 @@ diagnostic_count_diagnostic (diagnostic_context *context,
          expanded_location s = expand_location (diagnostic->location);
          fnotice (stderr, "%s:%d: confused by earlier errors, bailing out\n",
                   s.file, s.line);
-         exit (FATAL_EXIT_CODE);
+         exit (ICE_EXIT_CODE);
        }
 #endif
       if (context->internal_error)
@@ -263,7 +263,7 @@ diagnostic_action_after_output (diagnostic_context *context,
       fnotice (stderr, "Please submit a full bug report,\n"
               "with preprocessed source if appropriate.\n"
               "See %s for instructions.\n", bug_report_url);
-      exit (FATAL_EXIT_CODE);
+      exit (ICE_EXIT_CODE);
 
     case DK_FATAL:
       if (context->abort_on_error)
index 5b4e8be..16ec89b 100644 (file)
@@ -957,7 +957,8 @@ Normally the @command{gcc} program will exit with the code of 1 if any
 phase of the compiler returns a non-success return code.  If you specify
 @option{-pass-exit-codes}, the @command{gcc} program will instead return with
 numerically highest error produced by any phase that returned an error
-indication.
+indication.  The C, C++, and Fortran frontends return 4, if an internal
+compiler error is encountered.
 @end table
 
 If you only want some of the stages of compilation, you can use
index da2cc08..e6ce54a 100644 (file)
@@ -1,3 +1,8 @@
+2006-03-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+       PR driver/22600
+       * error.c (gfc_fatal_error): Return ICE_EXIT_CODE instead of 4.
+
 2006-03-22  Thomas Koenig  <Thomas.Koenig@online.de>
 
        PR fortran/19303
index 4c82c4a..435fc16 100644 (file)
@@ -677,7 +677,7 @@ gfc_internal_error (const char *format, ...)
   error_print ("", format, argp);
   va_end (argp);
 
-  exit (4);
+  exit (ICE_EXIT_CODE);
 }
 
 
index b7e9a1d..c606773 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -330,6 +330,7 @@ static int default_arg (const char *, int);
 static void set_multilib_dir (void);
 static void print_multilib_info (void);
 static void perror_with_name (const char *);
+static void fatal_ice (const char *, ...) ATTRIBUTE_PRINTF_1 ATTRIBUTE_NORETURN;
 static void notice (const char *, ...) ATTRIBUTE_PRINTF_1;
 static void display_help (void);
 static void add_preprocessor_option (const char *, int);
@@ -2997,12 +2998,12 @@ execute (void)
              }
            else
 #endif
-             fatal ("\
+             fatal_ice ("\
 Internal error: %s (program %s)\n\
 Please submit a full bug report.\n\
 See %s for instructions.",
-                    strsignal (WTERMSIG (status)), commands[i].prog,
-                    bug_report_url);
+                       strsignal (WTERMSIG (status)), commands[i].prog,
+                       bug_report_url);
          }
        else if (WIFEXITED (status)
                 && WEXITSTATUS (status) >= MIN_FATAL_STATUS)
@@ -6818,12 +6819,27 @@ perror_with_name (const char *name)
 void
 fancy_abort (const char *file, int line, const char *func)
 {
-  fatal ("internal gcc abort in %s, at %s:%d", func, file, line);
+  fatal_ice ("internal gcc abort in %s, at %s:%d", func, file, line);
 }
 \f
 /* Output an error message and exit.  */
 
 void
+fatal_ice (const char *cmsgid, ...)
+{
+  va_list ap;
+
+  va_start (ap, cmsgid);
+
+  fprintf (stderr, "%s: ", programname);
+  vfprintf (stderr, _(cmsgid), ap);
+  va_end (ap);
+  fprintf (stderr, "\n");
+  delete_temp_files ();
+  exit (pass_exit_codes ? ICE_EXIT_CODE : 1);
+}
+
+void
 fatal (const char *cmsgid, ...)
 {
   va_list ap;
index c89394b..4d191e7 100644 (file)
@@ -227,6 +227,8 @@ extern int errno;
 # endif
 #endif
 
+#define ICE_EXIT_CODE 4
+
 #ifdef HAVE_UNISTD_H
 # include <unistd.h>
 #endif