2015-02-13 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/64506
* scanner.c (gfc_next_char_literal): For free form source,
check for '!' and if found, clear the comment and go back
and get the next character. For fixed form source, skip the
rest of the line.
From-SVN: r220687
+2015-02-13 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/64506
+ * scanner.c (gfc_next_char_literal): For free form source,
+ check for '!' and if found, clear the comment and go back
+ and get the next character. For fixed form source, skip the
+ rest of the line.
+
2015-02-12 Paul Thomas <pault@gcc.gnu.org>
PR fortran/64932
c = next_char ();
/* Character constants to be continued cannot have commentary
- after the '&'. */
+ after the '&'. However, there are cases where we may think we
+ are still in a string and we are looking for a possible
+ doubled quote and we end up here. See PR64506. */
- if (in_string && c != '\n')
+ if (in_string)
{
gfc_current_locus = old_loc;
- c = '&';
- goto done;
+
+ if (c == '!')
+ {
+ skip_comment_line ();
+ goto restart;
+ }
+
+ if (c != '\n')
+ {
+ c = '&';
+ goto done;
+ }
}
if (c != '!' && c != '\n')
else /* Fixed form. */
{
/* Fixed form continuation. */
- if (!in_string && c == '!')
+ if (in_string != INSTRING_WARN && c == '!')
{
/* Skip comment at end of line. */
do