This, almost obvious, patch merges the older SIGPIPE conditional into
the new switch I added. I found the FALLTHROUGH marker needed to be
outside the #if, which was a little annoying.
I changed the backtrace error message to also explicitly say it was a
signal wot did it.
ok?
nathan
--
Nathan Sidwell
2017-08-16 Nathan Sidwell <nat...@acm.org>
* gcc.c (execute): Fold SIGPIPE handling into switch
statement. Adjust internal error message.
Index: gcc.c
===================================================================
--- gcc.c (revision 251119)
+++ gcc.c (working copy)
@@ -3135,44 +3135,45 @@ execute (void)
int status = statuses[i];
if (WIFSIGNALED (status))
- {
+ switch (WTERMSIG (status))
+ {
+ case SIGINT:
+ case SIGQUIT:
+ case SIGKILL:
+ case SIGTERM:
+ /* The user (or environment) did something to the
+ inferior. Making this an ICE confuses the user into
+ thinking there's a compiler bug. Much more likely is
+ the user or OOM killer nuked it. */
+ fatal_error (input_location,
+ "%s signal terminated program %s",
+ strsignal (WTERMSIG (status)),
+ commands[i].prog);
+ break;
+
#ifdef SIGPIPE
- /* SIGPIPE is a special case. It happens in -pipe mode
- when the compiler dies before the preprocessor is done,
- or the assembler dies before the compiler is done.
- There's generally been an error already, and this is
- just fallout. So don't generate another error unless
- we would otherwise have succeeded. */
- if (WTERMSIG (status) == SIGPIPE
- && (signal_count || greatest_status >= MIN_FATAL_STATUS))
- {
- signal_count++;
- ret_code = -1;
- }
- else
-#endif
- switch (WTERMSIG (status))
+ case SIGPIPE:
+ /* SIGPIPE is a special case. It happens in -pipe mode
+ when the compiler dies before the preprocessor is
+ done, or the assembler dies before the compiler is
+ done. There's generally been an error already, and
+ this is just fallout. So don't generate another
+ error unless we would otherwise have succeeded. */
+ if (signal_count || greatest_status >= MIN_FATAL_STATUS)
{
- case SIGINT:
- case SIGQUIT:
- case SIGKILL:
- case SIGTERM:
- /* The user (or environment) did something to the
- inferior. Making this an ICE confuses the user
- into thinking there's a compiler bug. Much more
- likely is the user or OOM killer nuked it. */
- fatal_error (input_location,
- "%s signal terminated program %s",
- strsignal (WTERMSIG (status)),
- commands[i].prog);
+ signal_count++;
+ ret_code = -1;
break;
- default:
- /* The inferior failed to catch the signal. */
- internal_error_no_backtrace ("%s (program %s)",
- strsignal (WTERMSIG (status)),
- commands[i].prog);
}
- }
+#endif
+ /* FALLTHROUGH */
+
+ default:
+ /* The inferior failed to catch the signal. */
+ internal_error_no_backtrace ("%s signal terminated program %s",
+ strsignal (WTERMSIG (status)),
+ commands[i].prog);
+ }
else if (WIFEXITED (status)
&& WEXITSTATUS (status) >= MIN_FATAL_STATUS)
{