diff options
-rw-r--r-- | gcc/fortran/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/fortran/error.c | 6 | ||||
-rw-r--r-- | gcc/fortran/parse.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/empty_label.f | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/empty_label.f90 | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/warnings_are_errors_1.f | 2 |
7 files changed, 35 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 9c9744b..650adca 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,13 @@ +2009-09-24 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/41459 + * error.c(gfc_warning_now): Move warnings_are_errors test to + after actual emitting of the warning. + * parse.c (next_free): Improve error locus printing. + (next_fixed): Change gfc_warn to gfc_warning_now, and improve + locus reporting. + + 2009-09-16 Michael Matz <matz@suse.de> PR fortran/41212 diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c index 9d5453e..88c2883 100644 --- a/gcc/fortran/error.c +++ b/gcc/fortran/error.c @@ -821,14 +821,16 @@ gfc_warning_now (const char *nocmsgid, ...) i = buffer_flag; buffer_flag = 0; warnings++; - if (warnings_are_errors) - gfc_increment_error_count(); va_start (argp, nocmsgid); error_print (_("Warning:"), _(nocmsgid), argp); va_end (argp); error_char ('\0'); + + if (warnings_are_errors) + gfc_increment_error_count(); + buffer_flag = i; } diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index e743989..93a6cfd 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -655,7 +655,7 @@ next_free (void) if (gfc_match_eos () == MATCH_YES) { gfc_warning_now ("Ignoring statement label in empty statement " - "at %C"); + "at %L", &label_locus); gfc_free_st_label (gfc_statement_label); gfc_statement_label = NULL; return ST_NONE; @@ -848,7 +848,8 @@ next_fixed (void) blank_line: if (digit_flag) - gfc_warning ("Ignoring statement label in empty statement at %C"); + gfc_warning_now ("Ignoring statement label in empty statement at %L", + &label_locus); gfc_current_locus.lb->truncated = 0; gfc_advance_line (); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2511b4e..c307a0f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2009-09-24 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/41459 + * gfortran.dg/empty_label.f: New test. + * gfortran.dg/empty_label.f90: Ditto. + * gfortran.dg/warnings_are_errors_1.f: Fix to emit a single warning. + 2009-09-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * gcc.dg/torture/builtin-math-7.c: Test complex int division at diff --git a/gcc/testsuite/gfortran.dg/empty_label.f b/gcc/testsuite/gfortran.dg/empty_label.f new file mode 100644 index 0000000..446fe8b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/empty_label.f @@ -0,0 +1,5 @@ +C { dg-do compile } +C { dg-options "-Werror -fmax-errors=1" } +100 ! { dg-warning "empty statement" } + end +C { dg-error "count reached limit" "" { target *-*-* } 0 } diff --git a/gcc/testsuite/gfortran.dg/empty_label.f90 b/gcc/testsuite/gfortran.dg/empty_label.f90 new file mode 100644 index 0000000..6300d30 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/empty_label.f90 @@ -0,0 +1,5 @@ +! { dg-do compile } +! { dg-options "-Werror -fmax-errors=1" } +100 ! { dg-warning "empty statement" } +end +! { dg-error "count reached limit" "" { target *-*-* } 0 } diff --git a/gcc/testsuite/gfortran.dg/warnings_are_errors_1.f b/gcc/testsuite/gfortran.dg/warnings_are_errors_1.f index 2452b49..3d163bb 100644 --- a/gcc/testsuite/gfortran.dg/warnings_are_errors_1.f +++ b/gcc/testsuite/gfortran.dg/warnings_are_errors_1.f @@ -8,7 +8,7 @@ integer(kind=1) :: i real :: r1, r2(3) ! gfc_warning_now: -0 ! { dg-warning "Zero is not a valid statement label" } +0 r1 = 0 ! { dg-warning "Zero is not a valid statement label" } ! 34 5 i=0 ! gfc_notify_std(GFC_STD_F95_DEL): |