diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2016-11-17 00:18:18 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2016-11-17 00:18:18 +0000 |
commit | 99c72130970cb106f4791b2dff7cda1ac3cfea31 (patch) | |
tree | 9649680187c334e798f76d404930176731428bf3 /gcc | |
parent | 243255c0983c8c1e9ea79a0296fd41a13c052b27 (diff) | |
download | gcc-99c72130970cb106f4791b2dff7cda1ac3cfea31.zip gcc-99c72130970cb106f4791b2dff7cda1ac3cfea31.tar.gz gcc-99c72130970cb106f4791b2dff7cda1ac3cfea31.tar.bz2 |
re PR fortran/58001 (Make it possible to silence "Extension: Tab character in format" warning)
2016-11-16 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/58001
* io.c (next_char_not_space): Update handling of a 'tab' in a FORMAT.
(format_lex): Adjust invocations of next_char_not_space().
2016-11-16 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/58001
* gfortran.dg/fmt_tab_1.f90: Adjust testcase.
* gfortran.dg/fmt_tab_2.f90: Ditto.
From-SVN: r242530
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/io.c | 39 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/fmt_tab_1.f90 | 9 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/fmt_tab_2.f90 | 6 |
5 files changed, 36 insertions, 30 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4dad588..428ebda 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2016-11-16 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/58001 + * io.c (next_char_not_space): Update handling of a 'tab' in a FORMAT. + (format_lex): Adjust invocations of next_char_not_space(). + 2016-11-16 Andre Vehreschild <vehre@gcc.gnu.org> PR fortran/78356 diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index 04cc1a2..d35437a 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -200,23 +200,14 @@ unget_char (void) /* Eat up the spaces and return a character. */ static char -next_char_not_space (bool *error) +next_char_not_space () { char c; do { error_element = c = next_char (NONSTRING); if (c == '\t') - { - if (gfc_option.allow_std & GFC_STD_GNU) - gfc_warning (0, "Extension: Tab character in format at %C"); - else - { - gfc_error ("Extension: Tab character in format at %C"); - *error = true; - return c; - } - } + gfc_warning (OPT_Wtabs, "Nonconforming tab character in format at %C"); } while (gfc_is_whitespace (c)); return c; @@ -234,7 +225,6 @@ format_lex (void) char c, delim; int zflag; int negative_flag; - bool error = false; if (saved_token != FMT_NONE) { @@ -243,7 +233,7 @@ format_lex (void) return token; } - c = next_char_not_space (&error); + c = next_char_not_space (); negative_flag = 0; switch (c) @@ -253,7 +243,7 @@ format_lex (void) /* Falls through. */ case '+': - c = next_char_not_space (&error); + c = next_char_not_space (); if (!ISDIGIT (c)) { token = FMT_UNKNOWN; @@ -264,7 +254,7 @@ format_lex (void) do { - c = next_char_not_space (&error); + c = next_char_not_space (); if (ISDIGIT (c)) value = 10 * value + c - '0'; } @@ -294,7 +284,7 @@ format_lex (void) do { - c = next_char_not_space (&error); + c = next_char_not_space (); if (ISDIGIT (c)) { value = 10 * value + c - '0'; @@ -329,7 +319,7 @@ format_lex (void) break; case 'T': - c = next_char_not_space (&error); + c = next_char_not_space (); switch (c) { case 'L': @@ -357,7 +347,7 @@ format_lex (void) break; case 'S': - c = next_char_not_space (&error); + c = next_char_not_space (); if (c != 'P' && c != 'S') unget_char (); @@ -365,7 +355,7 @@ format_lex (void) break; case 'B': - c = next_char_not_space (&error); + c = next_char_not_space (); if (c == 'N' || c == 'Z') token = FMT_BLANK; else @@ -427,7 +417,7 @@ format_lex (void) break; case 'E': - c = next_char_not_space (&error); + c = next_char_not_space (); if (c == 'N' ) token = FMT_EN; else if (c == 'S') @@ -457,7 +447,7 @@ format_lex (void) break; case 'D': - c = next_char_not_space (&error); + c = next_char_not_space (); if (c == 'P') { if (!gfc_notify_std (GFC_STD_F2003, "DP format " @@ -478,7 +468,7 @@ format_lex (void) "specifier not allowed at %C")) return FMT_ERROR; token = FMT_DT; - c = next_char_not_space (&error); + c = next_char_not_space (); if (c == '\'' || c == '"') { delim = c; @@ -518,7 +508,7 @@ format_lex (void) break; case 'R': - c = next_char_not_space (&error); + c = next_char_not_space (); switch (c) { case 'C': @@ -559,9 +549,6 @@ format_lex (void) break; } - if (error) - return FMT_ERROR; - return token; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 20fcf38..9b616e6 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2016-11-16 Steven G. Kargl <kargl@gcc.gnu.org> + + PR fortran/58001 + * gfortran.dg/fmt_tab_1.f90: Adjust testcase. + * gfortran.dg/fmt_tab_2.f90: Ditto. + 2016-11-16 Jakub Jelinek <jakub@redhat.com> PR rtl-optimization/78378 diff --git a/gcc/testsuite/gfortran.dg/fmt_tab_1.f90 b/gcc/testsuite/gfortran.dg/fmt_tab_1.f90 index f58e388..a763714 100644 --- a/gcc/testsuite/gfortran.dg/fmt_tab_1.f90 +++ b/gcc/testsuite/gfortran.dg/fmt_tab_1.f90 @@ -1,7 +1,12 @@ ! { dg-do compile } -! { dg-options -Wno-error=tabs } +! { dg-options -Wtabs } ! PR fortran/32987 +! PR fortran/58001 program TestFormat write (*, 10) - 10 format ('Hello ', 'bug!') ! { dg-warning "Extension: Tab character in format" } + ! There is a tab character before 'bug!'. This is accepted without + ! the -Wno-tabs option or a -std= option. + 10 format ('Hello ', 'bug!') ! { dg-warning "tab character in format" } + end +! { dg-excess-errors "tab character in format" } diff --git a/gcc/testsuite/gfortran.dg/fmt_tab_2.f90 b/gcc/testsuite/gfortran.dg/fmt_tab_2.f90 index 560d886..bfff7ce 100644 --- a/gcc/testsuite/gfortran.dg/fmt_tab_2.f90 +++ b/gcc/testsuite/gfortran.dg/fmt_tab_2.f90 @@ -1,7 +1,9 @@ ! { dg-do compile } ! { dg-options "-std=f2003" } ! PR fortran/32987 +! PR fortran/58001 program TestFormat - write (*, 10) ! { dg-error "FORMAT label 10 at .1. not defined" } - 10 format ('Hello ', 'bug!') ! { dg-error "Extension: Tab character in format|Nonconforming tab character" } + write (*, 10) + 10 format ('Hello ', 'bug!') ! { dg-warning "tab character in format" } end +! { dg-excess-errors "tab character in FORMAT" } |