From: Jerry DeLisle Date: Sat, 16 May 2015 17:44:15 +0000 (+0000) Subject: re PR fortran/65903 (Line continuation followed by comment character in string fails... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c55bbc72ffaabcab433cdcce28ba69d21c35e21c;p=gcc.git re PR fortran/65903 (Line continuation followed by comment character in string fails to compile) 2015-05-16 Jerry DeLisle PR fortran/65903 * io.c (format_lex): Change to NONSTRING when checking for possible doubled quote. * scanner.c (gfc_next_char_literal): Revert change from 64506 and add a check for quotes and return. From-SVN: r223248 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 002a147ce62..dcdf95e36c3 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2015-05-16 Jerry DeLisle + + PR fortran/65903 + * io.c (format_lex): Change to NONSTRING when checking for + possible doubled quote. + * scanner.c (gfc_next_char_literal): Revert change from 64506 + and add a check for quotes and return. + 2015-05-16 Thomas Koenig PR fortran/66113 diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index 7ba6b092e98..82a0a871fd3 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -385,7 +385,7 @@ format_lex (void) if (c == delim) { - c = next_char (INSTRING_NOWARN); + c = next_char (NONSTRING); if (c == '\0') { diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c index 55b36250cf5..e5243457ad0 100644 --- a/gcc/fortran/scanner.c +++ b/gcc/fortran/scanner.c @@ -1272,21 +1272,11 @@ restart: are still in a string and we are looking for a possible doubled quote and we end up here. See PR64506. */ - if (in_string) + if (in_string && c != '\n') { gfc_current_locus = old_loc; - - if (c == '!') - { - skip_comment_line (); - goto restart; - } - - if (c != '\n') - { - c = '&'; - goto done; - } + c = '&'; + goto done; } if (c != '!' && c != '\n') @@ -1392,6 +1382,8 @@ restart: "Missing %<&%> in continued character " "constant at %C"); } + else if (!in_string && (c == '\'' || c == '"')) + goto done; /* Both !$omp and !$ -fopenmp continuation lines have & on the continuation line only optionally. */ else if (openmp_flag || openacc_flag || openmp_cond_flag)