From: Nathan Sidwell Date: Sat, 15 Oct 2016 11:08:10 +0000 (+0000) Subject: revert: diagnostic.c (diagnostic_action_after_output): Remove max error handling... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=64190f049ac8117b403b038ca35bc771132b6e73;p=gcc.git revert: diagnostic.c (diagnostic_action_after_output): Remove max error handling here .... Revert * diagnostic.c (diagnostic_action_after_output): Remove max error handling here .... (diagnostic_report_diagnostic): ... do it here instead. testsuite/ * c-c++-common/fmax-errors.c: Make sure note is emitted. From-SVN: r241198 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a131bba2909..2cf3f940d88 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,9 +1,3 @@ -2016-10-14 Nathan Sidwell - - * diagnostic.c (diagnostic_action_after_output): Remove fatal - and max error handling here .... - (diagnostic_report_diagnostic): ... do it here instead. - 2016-10-14 David Malcolm * print-rtl-function.c (print_edge): Omit "(flags)" when none are diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 24aceec558c..2304e14c761 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -470,8 +470,18 @@ diagnostic_action_after_output (diagnostic_context *context, diagnostic_finish (context); exit (FATAL_EXIT_CODE); } - /* -fmax-error handling is just before the next diagnostic is - emitted. */ + if (context->max_errors != 0 + && ((unsigned) (diagnostic_kind_count (context, DK_ERROR) + + diagnostic_kind_count (context, DK_SORRY) + + diagnostic_kind_count (context, DK_WERROR)) + >= context->max_errors)) + { + fnotice (stderr, + "compilation terminated due to -fmax-errors=%u.\n", + context->max_errors); + diagnostic_finish (context); + exit (FATAL_EXIT_CODE); + } break; case DK_ICE: @@ -824,7 +834,9 @@ diagnostic_report_diagnostic (diagnostic_context *context, -Wno-error=*. */ if (context->warning_as_error_requested && diagnostic->kind == DK_WARNING) - diagnostic->kind = DK_ERROR; + { + diagnostic->kind = DK_ERROR; + } if (diagnostic->option_index && diagnostic->option_index != permissive_error_option (context)) @@ -880,25 +892,6 @@ diagnostic_report_diagnostic (diagnostic_context *context, return false; } - if (diagnostic->kind != DK_NOTE && context->max_errors) - { - /* Check, before emitting the diagnostic, whether we would - exceed the limit. This way we will emit notes relevant to - the final emitted error. */ - int count = (diagnostic_kind_count (context, DK_ERROR) - + diagnostic_kind_count (context, DK_SORRY) - + diagnostic_kind_count (context, DK_WERROR)); - - if ((unsigned) count >= context->max_errors) - { - fnotice (stderr, - "compilation terminated due to -fmax-errors=%u.\n", - context->max_errors); - diagnostic_finish (context); - exit (FATAL_EXIT_CODE); - } - } - context->lock++; if (diagnostic->kind == DK_ICE || diagnostic->kind == DK_ICE_NOBT) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0e3b399ed4a..849c6e49de6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,7 +1,3 @@ -2016-10-14 Nathan Sidwell - - * c-c++-common/fmax-errors.c: Add error with note. - 2016-10-14 Jakub Jelinek PR middle-end/77959 diff --git a/gcc/testsuite/c-c++-common/fmax-errors.c b/gcc/testsuite/c-c++-common/fmax-errors.c index b44e2386ae5..1ef78eb9eb8 100644 --- a/gcc/testsuite/c-c++-common/fmax-errors.c +++ b/gcc/testsuite/c-c++-common/fmax-errors.c @@ -1,21 +1,11 @@ /* PR c/44782 */ /* { dg-do compile } */ -/* { dg-options "-fmax-errors=3 -Wall" } */ +/* { dg-options "-fmax-errors=3" } */ void foo (unsigned int i, unsigned int j) { (i) (); /* { dg-error "" } */ (j) (); /* { dg-error "" } */ - - i + j; /* { dg-warning "" } */ - - (k) (); /* { dg-error "" } */ - /* Make sure we see the notes related to the final error we emit. */ - /* { dg-message "identifier" "" { target c } 12 } */ - - /* Warnings after the final error should not appear. */ - i + j; /* no warning. */ - + (i+j) (); /* { dg-error "" } */ (i*j) (); /* no error here due to -fmax-errors */ - } /* { dg-prune-output "compilation terminated" } */