aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/scanner.c
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2010-12-11 23:14:45 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2010-12-11 23:14:45 +0000
commit696abb30d602208b316845bff9974e4b8b6e86ef (patch)
tree982b960730fe59e92f42e77b35659f096fb2a00c /gcc/fortran/scanner.c
parenta70de21ffba9c1c8b4c5096bf9faf3deeb054c76 (diff)
downloadgcc-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.c12
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. */