re PR fortran/35882 (Miscounted continuation lines when interspersed with data)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Sun, 20 Apr 2008 21:11:22 +0000 (21:11 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Sun, 20 Apr 2008 21:11:22 +0000 (21:11 +0000)
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

gcc/fortran/ChangeLog
gcc/fortran/scanner.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/continuation_3.f90
gcc/testsuite/gfortran.dg/continuation_5.f

index abcc336e4d1349772881df7998b1146a49b8d2a8..78d9359c9b2418a859cc901c9e127b9768eb6065 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2008-04-19  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/35944
index dcdac64e725b5ecf86aefb7ef9460c3652435107..1aa52f5d57699ca1f4f881a4936bccb2e5c8ed38 100644 (file)
@@ -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);
     }
 
index d2435caaa72cb25d947845b7d5e293a4f9f16eac..a62ea30fa9c017accf554105daa78dad739a5beb 100644 (file)
@@ -1,3 +1,9 @@
+2008-04-20  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/35882
+       * gfortran.dg/continuation_5.f: Add some comment lines.
+       * gfortran.dg/continuation_3.f90: Add some comment lines.
+       
 2008-04-20  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR libfortran/35960
index 238f8cc7b8f9acc59db5ee06fcf5ebbcd3eca2df..169f06f65a302181a24775edde157c6e31755b31 100644 (file)
@@ -72,8 +72,12 @@ print *, &
        "7" // & ! 27
        "8" // & ! 28
        "9" // & ! 29
+!
+   !
        "0" // & ! 30
        "1" // & ! 31
+!
+!
        "2" // & ! 32
        "3" // & ! 33
        "4" // & ! 34
index 15e06077ff36f78b61d5beb2dc874868b047a9bd..aeb240368cbe890485b3b64542f82ab3de60e4ea 100644 (file)
      c "7" // !  7
      c "8" // !  8
      c "9" // !  9
+!
+c
+*
+C
      c "0" // ! 10
      c "1" // ! 11
      c "2" // ! 12
      c "3" // ! 13
      c "4" // ! 14
+c
+ !
+                          !
      c "5" // ! 15
      c "6" // ! 16
      c "7" // ! 17