re PR fortran/35882 (Miscounted continuation lines when interspersed with data)
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 14 Apr 2008 00:43:32 +0000 (00:43 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Mon, 14 Apr 2008 00:43:32 +0000 (00:43 +0000)
2008-04-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
    Tobias Burnus  <burnus@net-b.de>

PR fortran/35882
* options.c (gfc_init_options): Set the default maximum continuation
lines to 255 for both free and fixed form source for warnings.
(gfc_handle_option): Set -std=f95 fixed form max continuations to 19 and
the -std=f95 free form max continuations to 39 for warnings.
* scanner.c (gfc_next_char_literal): Adjust the current_line number only
if it is less than the current locus.

Co-Authored-By: Tobias Burnus <burnus@net-b.de>
From-SVN: r134251

gcc/fortran/ChangeLog
gcc/fortran/options.c
gcc/fortran/scanner.c

index 7833747bec710a210e41ac3eeb08647ae46e7dfb..a282623da15b7a1abe08326e47d18e68278408cd 100644 (file)
@@ -1,3 +1,14 @@
+2008-04-13  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+           Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/35882
+       * options.c (gfc_init_options): Set the default maximum continuation
+       lines to 255 for both free and fixed form source for warnings.
+       (gfc_handle_option): Set -std=f95 fixed form max continuations to 19 and
+       the -std=f95 free form max continuations to 39 for warnings.
+       * scanner.c (gfc_next_char_literal): Adjust the current_line number only
+       if it is less than the current locus.
+
 2008-04-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/25829 28655
index 5ccbc77fb67ff1dde38e17e1084b4414155a5269..06a462205b411c1a9094e8d0f2d8de4b6e228a0f 100644 (file)
@@ -58,8 +58,8 @@ gfc_init_options (unsigned int argc ATTRIBUTE_UNUSED,
   gfc_option.source_form = FORM_UNKNOWN;
   gfc_option.fixed_line_length = 72;
   gfc_option.free_line_length = 132;
-  gfc_option.max_continue_fixed = 19;
-  gfc_option.max_continue_free = 39;
+  gfc_option.max_continue_fixed = 255;
+  gfc_option.max_continue_free = 255;
   gfc_option.max_identifier_length = GFC_MAX_SYMBOL_LEN;
   gfc_option.max_subrecord_length = 0;
   gfc_option.convert = GFC_CONVERT_NATIVE;
@@ -733,6 +733,8 @@ gfc_handle_option (size_t scode, const char *arg, int value)
     case OPT_std_f95:
       gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F95 | GFC_STD_F77;
       gfc_option.warn_std = GFC_STD_F95_OBS;
+      gfc_option.max_continue_fixed = 19;
+      gfc_option.max_continue_free = 39;
       gfc_option.max_identifier_length = 31;
       gfc_option.warn_ampersand = 1;
       gfc_option.warn_tabs = 0;
@@ -742,8 +744,6 @@ gfc_handle_option (size_t scode, const char *arg, int value)
       gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77 
        | GFC_STD_F2003 | GFC_STD_F95;
       gfc_option.warn_std = GFC_STD_F95_OBS;
-      gfc_option.max_continue_fixed = 255;
-      gfc_option.max_continue_free = 255;
       gfc_option.max_identifier_length = 63;
       gfc_option.warn_ampersand = 1;
       gfc_option.warn_tabs = 0;
@@ -753,8 +753,6 @@ gfc_handle_option (size_t scode, const char *arg, int value)
       gfc_option.allow_std = GFC_STD_F95_OBS | GFC_STD_F77 
        | GFC_STD_F2003 | GFC_STD_F95 | GFC_STD_F2008;
       gfc_option.warn_std = GFC_STD_F95_OBS;
-      gfc_option.max_continue_fixed = 255;
-      gfc_option.max_continue_free = 255;
       gfc_option.max_identifier_length = 63;
       gfc_option.warn_ampersand = 1;
       gfc_option.warn_tabs = 0;
index 872f35087da2df29ed8c9b5498a28fd3cf2a1785..dcdac64e725b5ecf86aefb7ef9460c3652435107 100644 (file)
@@ -821,7 +821,8 @@ restart:
                             "statement at %C", gfc_option.max_continue_free);
            }
        }
-      continue_line = gfc_linebuf_linenum (gfc_current_locus.lb);
+      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 ();