From 52249a2e3f3d67b8a86ad232428005c449b77a3e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Manuel=20L=C3=B3pez-Ib=C3=A1=C3=B1ez?= Date: Mon, 24 Mar 2008 14:19:55 +0000 Subject: [PATCH] diagnostic.c (diagnostic_count_diagnostic): Delete. 2008-03-24 Manuel Lopez-Ibanez * diagnostic.c (diagnostic_count_diagnostic): Delete. (diagnostic_report_diagnostic): Update. Handle ICEs here. From-SVN: r133478 --- gcc/ChangeLog | 5 +++ gcc/diagnostic.c | 108 +++++++++++++++++------------------------------ 2 files changed, 44 insertions(+), 69 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0d28bd0d4f2..fd9ef602365 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-03-24 Manuel Lopez-Ibanez + + * diagnostic.c (diagnostic_count_diagnostic): Delete. + (diagnostic_report_diagnostic): Update. Handle ICEs here. + 2008-03-24 Nathan Sidwell * gthr-vxworks.h (UNUSED): Define. diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 29889047127..5a6aaee914d 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -51,8 +51,7 @@ static void default_diagnostic_finalizer (diagnostic_context *, diagnostic_info *); static void error_recursion (diagnostic_context *) ATTRIBUTE_NORETURN; -static bool diagnostic_count_diagnostic (diagnostic_context *, - diagnostic_info *); + static void diagnostic_action_after_output (diagnostic_context *, diagnostic_info *); static void real_abort (void) ATTRIBUTE_NORETURN; @@ -162,54 +161,6 @@ diagnostic_build_prefix (diagnostic_info *diagnostic) : build_message_string ("%s:%d: %s", s.file, s.line, text)); } -/* Count a diagnostic. Return true if the message should be printed. */ -static bool -diagnostic_count_diagnostic (diagnostic_context *context, - diagnostic_info *diagnostic) -{ - diagnostic_t kind = diagnostic->kind; - switch (kind) - { - default: - gcc_unreachable (); - - case DK_ICE: -#ifndef ENABLE_CHECKING - /* When not checking, ICEs are converted to fatal errors when an - error has already occurred. This is counteracted by - abort_on_error. */ - if ((diagnostic_kind_count (context, DK_ERROR) > 0 - || diagnostic_kind_count (context, DK_SORRY) > 0) - && !context->abort_on_error) - { - expanded_location s = expand_location (diagnostic->location); - fnotice (stderr, "%s:%d: confused by earlier errors, bailing out\n", - s.file, s.line); - exit (ICE_EXIT_CODE); - } -#endif - if (context->internal_error) - (*context->internal_error) (diagnostic->message.format_spec, - diagnostic->message.args_ptr); - /* Fall through. */ - - case DK_FATAL: case DK_SORRY: - case DK_ANACHRONISM: case DK_NOTE: - ++diagnostic_kind_count (context, kind); - break; - - case DK_WARNING: - ++diagnostic_kind_count (context, DK_WARNING); - break; - - case DK_ERROR: - ++diagnostic_kind_count (context, DK_ERROR); - break; - } - - return true; -} - /* Take any action which is expected to happen after the diagnostic is written out. This function does not always return. */ static void @@ -349,6 +300,7 @@ diagnostic_report_diagnostic (diagnostic_context *context, diagnostic_info *diagnostic) { bool maybe_print_warnings_as_errors_message = false; + const char *saved_format_spec; /* Give preference to being able to inhibit warnings, before they get reclassified to something else. */ @@ -409,27 +361,45 @@ diagnostic_report_diagnostic (diagnostic_context *context, context->lock++; - if (diagnostic_count_diagnostic (context, diagnostic)) + if (diagnostic->kind == DK_ICE) { - const char *saved_format_spec = diagnostic->message.format_spec; - - if (context->show_option_requested && diagnostic->option_index) - diagnostic->message.format_spec - = ACONCAT ((diagnostic->message.format_spec, - " [", cl_options[diagnostic->option_index].opt_text, "]", NULL)); - - diagnostic->message.locus = &diagnostic->location; - diagnostic->message.abstract_origin = &diagnostic->abstract_origin; - diagnostic->abstract_origin = NULL; - pp_format (context->printer, &diagnostic->message); - (*diagnostic_starter (context)) (context, diagnostic); - pp_output_formatted_text (context->printer); - (*diagnostic_finalizer (context)) (context, diagnostic); - pp_flush (context->printer); - diagnostic_action_after_output (context, diagnostic); - diagnostic->message.format_spec = saved_format_spec; - diagnostic->abstract_origin = NULL; +#ifndef ENABLE_CHECKING + /* When not checking, ICEs are converted to fatal errors when an + error has already occurred. This is counteracted by + abort_on_error. */ + if ((diagnostic_kind_count (context, DK_ERROR) > 0 + || diagnostic_kind_count (context, DK_SORRY) > 0) + && !context->abort_on_error) + { + expanded_location s = expand_location (diagnostic->location); + fnotice (stderr, "%s:%d: confused by earlier errors, bailing out\n", + s.file, s.line); + exit (ICE_EXIT_CODE); + } +#endif + if (context->internal_error) + (*context->internal_error) (diagnostic->message.format_spec, + diagnostic->message.args_ptr); } + ++diagnostic_kind_count (context, diagnostic->kind); + + saved_format_spec = diagnostic->message.format_spec; + if (context->show_option_requested && diagnostic->option_index) + diagnostic->message.format_spec + = ACONCAT ((diagnostic->message.format_spec, + " [", cl_options[diagnostic->option_index].opt_text, "]", NULL)); + + diagnostic->message.locus = &diagnostic->location; + diagnostic->message.abstract_origin = &diagnostic->abstract_origin; + diagnostic->abstract_origin = NULL; + pp_format (context->printer, &diagnostic->message); + (*diagnostic_starter (context)) (context, diagnostic); + pp_output_formatted_text (context->printer); + (*diagnostic_finalizer (context)) (context, diagnostic); + pp_flush (context->printer); + diagnostic_action_after_output (context, diagnostic); + diagnostic->message.format_spec = saved_format_spec; + diagnostic->abstract_origin = NULL; context->lock--; } -- 2.30.2