re PR other/30824 (-Werror -Wfatal-errors should stop after the first warning)
2007-02-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org> DJ Delorie <dj@redhat.com> PR other/30824 * diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to... (diagnostic_report_diagnostic): ... here, and turn them into real errors. If warnings are inhibited, no need to do anything. testsuite/ * gcc.dg/Wfatal.c: New. * gcc.dg/Wfatal-2.c: New. * gcc.dg/Werror-1.c: Adjust expectations. * gcc.dg/Werror-5.c: Likewise. * gcc.dg/Werror-7.c: Likewise. * gcc.dg/Werror-10.c: Likewise. * gcc.dg/Werror-11.c: Likewise. Co-Authored-By: DJ Delorie <dj@redhat.com> From-SVN: r122159
This commit is contained in:
parent
6bdcc60c75
commit
4e2bae26bf
|
@ -1,3 +1,11 @@
|
|||
2007-02-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
|
||||
DJ Delorie <dj@redhat.com>
|
||||
|
||||
PR other/30824
|
||||
* diagnostic.c (diagnostic_count_diagnostic): Move -Werror logic to...
|
||||
(diagnostic_report_diagnostic): ... here, and turn them into real
|
||||
errors. If warnings are inhibited, no need to do anything.
|
||||
|
||||
2007-02-20 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* config/i386/i386.md (expm1xf2): Reorder insn sequence for
|
||||
|
|
|
@ -202,27 +202,9 @@ diagnostic_count_diagnostic (diagnostic_context *context,
|
|||
break;
|
||||
|
||||
case DK_WARNING:
|
||||
if (!diagnostic_report_warnings_p ())
|
||||
return false;
|
||||
++diagnostic_kind_count (context, DK_WARNING);
|
||||
break;
|
||||
|
||||
/* -Werror can reclassify warnings as errors, but
|
||||
classify_diagnostic can reclassify it back to a warning. The
|
||||
second part of this test detects that case. */
|
||||
if (!context->warning_as_error_requested
|
||||
|| (context->classify_diagnostic[diagnostic->option_index]
|
||||
== DK_WARNING))
|
||||
{
|
||||
++diagnostic_kind_count (context, DK_WARNING);
|
||||
break;
|
||||
}
|
||||
else if (context->issue_warnings_are_errors_message)
|
||||
{
|
||||
pp_verbatim (context->printer,
|
||||
"%s: warnings being treated as errors\n", progname);
|
||||
context->issue_warnings_are_errors_message = false;
|
||||
}
|
||||
|
||||
/* And fall through. */
|
||||
case DK_ERROR:
|
||||
++diagnostic_kind_count (context, DK_ERROR);
|
||||
break;
|
||||
|
@ -362,6 +344,14 @@ void
|
|||
diagnostic_report_diagnostic (diagnostic_context *context,
|
||||
diagnostic_info *diagnostic)
|
||||
{
|
||||
bool maybe_print_warnings_as_errors_message = false;
|
||||
|
||||
/* Give preference to being able to inhibit warnings, before they
|
||||
get reclassified to something else. */
|
||||
if (diagnostic->kind == DK_WARNING
|
||||
&& !diagnostic_report_warnings_p ())
|
||||
return;
|
||||
|
||||
if (context->lock > 0)
|
||||
{
|
||||
/* If we're reporting an ICE in the middle of some other error,
|
||||
|
@ -373,6 +363,17 @@ diagnostic_report_diagnostic (diagnostic_context *context,
|
|||
error_recursion (context);
|
||||
}
|
||||
|
||||
/* If the user requested that warnings be treated as errors, so be
|
||||
it. Note that we do this before the next block so that
|
||||
individual warnings can be overridden back to warnings with
|
||||
-Wno-error=*. */
|
||||
if (context->warning_as_error_requested
|
||||
&& diagnostic->kind == DK_WARNING)
|
||||
{
|
||||
diagnostic->kind = DK_ERROR;
|
||||
maybe_print_warnings_as_errors_message = true;
|
||||
}
|
||||
|
||||
if (diagnostic->option_index)
|
||||
{
|
||||
/* This tests if the user provided the appropriate -Wfoo or
|
||||
|
@ -382,13 +383,26 @@ diagnostic_report_diagnostic (diagnostic_context *context,
|
|||
/* This tests if the user provided the appropriate -Werror=foo
|
||||
option. */
|
||||
if (context->classify_diagnostic[diagnostic->option_index] != DK_UNSPECIFIED)
|
||||
diagnostic->kind = context->classify_diagnostic[diagnostic->option_index];
|
||||
{
|
||||
diagnostic->kind = context->classify_diagnostic[diagnostic->option_index];
|
||||
maybe_print_warnings_as_errors_message = false;
|
||||
}
|
||||
/* This allows for future extensions, like temporarily disabling
|
||||
warnings for ranges of source code. */
|
||||
if (diagnostic->kind == DK_IGNORED)
|
||||
return;
|
||||
}
|
||||
|
||||
/* If we changed the kind due to -Werror, and didn't override it, we
|
||||
need to print this message. */
|
||||
if (context->issue_warnings_are_errors_message
|
||||
&& maybe_print_warnings_as_errors_message)
|
||||
{
|
||||
pp_verbatim (context->printer,
|
||||
"%s: warnings being treated as errors\n", progname);
|
||||
context->issue_warnings_are_errors_message = false;
|
||||
}
|
||||
|
||||
context->lock++;
|
||||
|
||||
if (diagnostic_count_diagnostic (context, diagnostic))
|
||||
|
|
|
@ -1,3 +1,15 @@
|
|||
2007-02-20 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
|
||||
DJ Delorie <dj@redhat.com>
|
||||
|
||||
PR other/30824
|
||||
* gcc.dg/Wfatal.c: New.
|
||||
* gcc.dg/Wfatal-2.c: New.
|
||||
* gcc.dg/Werror-1.c: Adjust expectations.
|
||||
* gcc.dg/Werror-5.c: Likewise.
|
||||
* gcc.dg/Werror-7.c: Likewise.
|
||||
* gcc.dg/Werror-10.c: Likewise.
|
||||
* gcc.dg/Werror-11.c: Likewise.
|
||||
|
||||
2007-02-20 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/30522
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#pragma GCC diagnostic error "-Waddress"
|
||||
|
||||
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */
|
||||
void __attribute__((dj)) bar() { } /* { dg-error "error: .* attribute directive ignored" } */
|
||||
|
||||
int i;
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#pragma GCC diagnostic error "-Waddress"
|
||||
|
||||
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */
|
||||
void __attribute__((dj)) bar() { } /* { dg-error "error: .* attribute directive ignored" } */
|
||||
|
||||
int i;
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#pragma GCC diagnostic warning "-Waddress"
|
||||
|
||||
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */
|
||||
void __attribute__((dj)) bar() { } /* { dg-error "error: .* attribute directive ignored" } */
|
||||
|
||||
int i;
|
||||
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
|
||||
/* Make sure -Werror turns warnings in to errors. */
|
||||
|
||||
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */
|
||||
void __attribute__((dj)) bar() { } /* { dg-error "error: .* attribute directive ignored" } */
|
||||
|
||||
int i;
|
||||
|
||||
void
|
||||
foo ()
|
||||
{
|
||||
if (&i) /* { dg-warning "warning: .* will always evaluate as 'true'" } */
|
||||
if (&i) /* { dg-error "error: .* will always evaluate as 'true'" } */
|
||||
grill ();
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
/* Make sure -Wno-error= overrides -Werror. */
|
||||
|
||||
void __attribute__((dj)) bar() { } /* { dg-warning "warning: .* attribute directive ignored" } */
|
||||
void __attribute__((dj)) bar() { } /* { dg-error "error: .* attribute directive ignored" } */
|
||||
|
||||
int i;
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-Woverflow -Wdiv-by-zero -Werror -Wfatal-errors" } */
|
||||
#include <limits.h>
|
||||
|
||||
int i = INT_MAX + 1; /* { dg-error "integer overflow in expression" } */
|
||||
int k = 1 / 0;
|
||||
int j = INT_MIN - 1;
|
||||
/* { dg-warning "being treated as errors" "" { target *-*-* } 0 } */
|
||||
/* { dg-warning "terminated due to -Wfatal-errors" "" { target *-*-* } 0 } */
|
|
@ -0,0 +1,11 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-Woverflow -Werror=div-by-zero -Wfatal-errors" } */
|
||||
#include <limits.h>
|
||||
|
||||
int i = INT_MAX + 1; /* { dg-warning "integer overflow in expression" } */
|
||||
int k = 1 / 0; /* { dg-error "division by zero" } */
|
||||
int j = INT_MIN - 1;
|
||||
/* { dg-warning "terminated due to -Wfatal-errors" "" { target *-*-* } 0 } */
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue