aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/scanner.c
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2008-04-20 21:11:22 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2008-04-20 21:11:22 +0000
commitf449022dca52d61f2f57cb40e6fc4b9b69049314 (patch)
treeee8359090ec8ff39b18cf812acb30a1a1f72b803 /gcc/fortran/scanner.c
parentef5f59f6395ae2db6c02c8bed4dad9a3dd8c563d (diff)
downloadgcc-f449022dca52d61f2f57cb40e6fc4b9b69049314.zip
gcc-f449022dca52d61f2f57cb40e6fc4b9b69049314.tar.gz
gcc-f449022dca52d61f2f57cb40e6fc4b9b69049314.tar.bz2
re PR fortran/35882 (Miscounted continuation lines when interspersed with data)
2008-04-20 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/35882 * scanner.c (skip_fixed_comments): Update continue_line when comment is detected. (gfc_next_char_literal): Likewise. PR fortran/35882 * gfortran.dg/continuation_5.f: Add some comment lines. * gfortran.dg/continuation_3.f90: Add some comment lines. From-SVN: r134493
Diffstat (limited to 'gcc/fortran/scanner.c')
-rw-r--r--gcc/fortran/scanner.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/gcc/fortran/scanner.c b/gcc/fortran/scanner.c
index dcdac64..1aa52f5 100644
--- a/gcc/fortran/scanner.c
+++ b/gcc/fortran/scanner.c
@@ -615,6 +615,10 @@ skip_fixed_comments (void)
!$|c$|*$ should be treated as 2 spaces if the characters
in columns 3 to 6 are valid fixed form label columns
characters. */
+ if (gfc_current_locus.lb != NULL
+ && continue_line < gfc_linebuf_linenum (gfc_current_locus.lb))
+ continue_line = gfc_linebuf_linenum (gfc_current_locus.lb);
+
if (gfc_option.flag_openmp)
{
if (next_char () == '$')
@@ -700,6 +704,9 @@ skip_fixed_comments (void)
if (col != 6 && c == '!')
{
+ if (gfc_current_locus.lb != NULL
+ && continue_line < gfc_linebuf_linenum (gfc_current_locus.lb))
+ continue_line = gfc_linebuf_linenum (gfc_current_locus.lb);
skip_comment_line ();
continue;
}
@@ -821,12 +828,14 @@ restart:
"statement at %C", gfc_option.max_continue_free);
}
}
- if (continue_line < gfc_linebuf_linenum (gfc_current_locus.lb))
- continue_line = gfc_linebuf_linenum (gfc_current_locus.lb);
/* Now find where it continues. First eat any comment lines. */
openmp_cond_flag = skip_free_comments ();
+ if (gfc_current_locus.lb != NULL
+ && continue_line < gfc_linebuf_linenum (gfc_current_locus.lb))
+ continue_line = gfc_linebuf_linenum (gfc_current_locus.lb);
+
if (prev_openmp_flag != openmp_flag)
{
gfc_current_locus = old_loc;
@@ -945,7 +954,8 @@ restart:
}
}
- if (continue_line < gfc_linebuf_linenum (gfc_current_locus.lb))
+ if (gfc_current_locus.lb != NULL
+ && continue_line < gfc_linebuf_linenum (gfc_current_locus.lb))
continue_line = gfc_linebuf_linenum (gfc_current_locus.lb);
}