diff options
author | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2008-04-20 21:11:22 +0000 |
---|---|---|
committer | Jerry DeLisle <jvdelisle@gcc.gnu.org> | 2008-04-20 21:11:22 +0000 |
commit | f449022dca52d61f2f57cb40e6fc4b9b69049314 (patch) | |
tree | ee8359090ec8ff39b18cf812acb30a1a1f72b803 /gcc/fortran/scanner.c | |
parent | ef5f59f6395ae2db6c02c8bed4dad9a3dd8c563d (diff) | |
download | gcc-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.c | 16 |
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); } |