diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2010-12-11 23:14:45 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2010-12-11 23:14:45 +0000 |
commit | 696abb30d602208b316845bff9974e4b8b6e86ef (patch) | |
tree | 982b960730fe59e92f42e77b35659f096fb2a00c /gcc/fortran/scanner.c | |
parent | a70de21ffba9c1c8b4c5096bf9faf3deeb054c76 (diff) | |
download | gcc-696abb30d602208b316845bff9974e4b8b6e86ef.zip gcc-696abb30d602208b316845bff9974e4b8b6e86ef.tar.gz gcc-696abb30d602208b316845bff9974e4b8b6e86ef.tar.bz2 |
re PR fortran/46705 (Spurious "Missing '&' in continued character constant" warning occurs twice)
2010-12-11 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/46705
* gfortran.h: New enum gfc_instring.
(gfc_next_char_literal): Update prototype.
* scanner.c (gfc_next_char_literal): Use new enum. Only give missing
'&' warning for INSTRING_WARN. (gfc_next_char): Use new enum.
(gfc_gobble_whitespace): Likewise.
* io.c (next_char): Use new enum. (next_char_not_space): Likewise.
(format_lex): Likewise.
* match.c (gfc_match_parens): Likewise.
(gfc_match_special_char): Likewise. (gfc_match_name_C): Likewise.
* parse.c (next_fixed): Likewise.
* primary.c (match_hollerith_constant): Likewise.
(next_string_char): Likewise.
From-SVN: r167716
Diffstat (limited to 'gcc/fortran/scanner.c')
-rw-r--r-- | gcc/fortran/scanner.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index 24fb60a..c226bae 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -997,7 +997,7 @@ gfc_skip_comments (void) context or not. */ gfc_char_t -gfc_next_char_literal (int in_string) +gfc_next_char_literal (gfc_instring in_string) { locus old_loc; int i, prev_openmp_flag; @@ -1146,10 +1146,10 @@ restart: { if (in_string) { - if (gfc_option.warn_ampersand) - gfc_warning_now ("Missing '&' in continued character " - "constant at %C"); gfc_current_locus.nextc--; + if (gfc_option.warn_ampersand && in_string == INSTRING_WARN) + gfc_warning ("Missing '&' in continued character " + "constant at %C"); } /* Both !$omp and !$ -fopenmp continuation lines have & on the continuation line only optionally. */ @@ -1270,7 +1270,7 @@ gfc_next_char (void) do { - c = gfc_next_char_literal (0); + c = gfc_next_char_literal (NONSTRING); } while (gfc_current_form == FORM_FIXED && gfc_is_whitespace (c)); @@ -1371,7 +1371,7 @@ gfc_gobble_whitespace (void) do { old_loc = gfc_current_locus; - c = gfc_next_char_literal (0); + c = gfc_next_char_literal (NONSTRING); /* Issue a warning for nonconforming tabs. We keep track of the line number because the Fortran matchers will often back up and the same line will be scanned multiple times. */ |