]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/34899 (Continuation lines with <tab><number> not recognized)
authorTobias Burnus <burnus@net-b.de>
Tue, 22 Jan 2008 07:33:46 +0000 (08:33 +0100)
committerTobias Burnus <burnus@gcc.gnu.org>
Tue, 22 Jan 2008 07:33:46 +0000 (08:33 +0100)
2008-01-22  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34899
        * scanner.c (load_line): Support <tab><digit> continuation
        * lines.
        * invoke.texi (-Wtabs): Document this.

2008-01-22  Tobias Burnus  <burnus@net-b.de>

        PR fortran/34899
        * gfortran.dg/tab_continuation.f: New.

From-SVN: r131713

gcc/fortran/ChangeLog
gcc/fortran/invoke.texi
gcc/fortran/scanner.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/tab_continuation.f [new file with mode: 0644]

index c6be6130a80753c1f2fd907564d4229365c6c707..57c9142ba940b21b135fd3294d557e6d3acd4708 100644 (file)
@@ -1,3 +1,9 @@
+2008-01-22  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/34899
+       * scanner.c (load_line): Support <tab><digit> continuation lines.
+       * invoke.texi (-Wtabs): Document this.
+
 2008-01-22  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/34896
index 22dd8983acdc9b8993070f320abb176e057160b7..0a67785d299327a7d5afccf43f301ab8c552e106 100644 (file)
@@ -499,10 +499,11 @@ A TRANSFER specifies a source that is shorter than the destination.
 @cindex warnings, tabs
 @cindex tabulators
 By default, tabs are accepted as whitespace, but tabs are not members
-of the Fortran Character Set.  @option{-Wno-tabs} will cause a warning
-to be issued if a tab is encountered. Note, @option{-Wno-tabs} is active
-for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003}, and
-@option{-Wall}.
+of the Fortran Character Set.  For continuation lines, a tab followed
+by a digit between 1 and 9 is supported.  @option{-Wno-tabs} will cause
+a warning to be issued if a tab is encountered. Note, @option{-Wno-tabs}
+is active for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003},
+and @option{-Wall}.
 
 @item -Wunderflow
 @opindex @code{Wunderflow}
index da4c37b155e799300315df4e791f13492ca0a6a4..9bbb06581c986aaf1a652066f23a5ed5850a2b1e 100644 (file)
@@ -1106,6 +1106,7 @@ load_line (FILE *input, char **pbuf, int *pbuflen)
   int trunc_flag = 0, seen_comment = 0;
   int seen_printable = 0, seen_ampersand = 0;
   char *buffer;
+  bool found_tab = false;
 
   /* Determine the maximum allowed line length.  */
   if (gfc_current_form == FORM_FREE)
@@ -1184,17 +1185,30 @@ load_line (FILE *input, char **pbuf, int *pbuflen)
          && (c == '*' || c == 'c' || c == 'd'))
        seen_comment = 1;
 
-      if (gfc_current_form == FORM_FIXED && c == '\t' && i <= 6)
+      /* Vendor extension: "<tab>1" marks a continuation line.  */
+      if (found_tab)
        {
+         found_tab = false;
+         if (c >= '1' && c <= '9')
+           {
+             *(buffer-1) = c;
+             continue;
+           }
+       }
+
+      if (gfc_current_form == FORM_FIXED && c == '\t' && i < 6)
+       {
+         found_tab = true;
+
          if (!gfc_option.warn_tabs && seen_comment == 0
              && current_line != linenum)
            {
              linenum = current_line;
-             gfc_warning_now ("Nonconforming tab character in column 1 "
-                              "of line %d", linenum);
+             gfc_warning_now ("Nonconforming tab character in column %d "
+                              "of line %d", i+1, linenum);
            }
 
-         while (i <= 6)
+         while (i < 6)
            {
              *buffer++ = ' ';
              i++;
index b3095a15f765419c4c8ab4d34c8b167f3bfe3bb3..7e4fd057f0aa5213a0a29613a5ccff7842f148f9 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-22  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/34899
+       * gfortran.dg/tab_continuation.f: New.
+
 2008-01-22  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/34896
diff --git a/gcc/testsuite/gfortran.dg/tab_continuation.f b/gcc/testsuite/gfortran.dg/tab_continuation.f
new file mode 100644 (file)
index 0000000..448cd20
--- /dev/null
@@ -0,0 +1,15 @@
+! { dg-do compile }
+!
+! PR fortran/34899
+!
+! Allow <tab>1 to <tab>9 as continuation marker, which is a very common
+! vendor extension.
+!
+       PARAMETER (LUMIN=11,LUMAX=20,MAPMAX=256,NPLANEMAX=999)
+       INTEGER NAXIS(0:MAPMAX,LUMIN:LUMAX),NAXIS1(0:MAPMAX,LUMIN:LUMAX),
+       1NAXIS2(0:MAPMAX,LUMIN:LUMAX),NAXIS3(0:MAPMAX,LUMIN:LUMAX)
+       end
+! { dg-warning "Nonconforming tab character in column 1 of line 8" "Nonconforming tab" {target "*-*-*"} 0 }
+! { dg-warning "Nonconforming tab character in column 1 of line 9" "Nonconforming tab" {target "*-*-*"} 0 }
+! { dg-warning "Nonconforming tab character in column 1 of line 10" "Nonconforming tab" {target "*-*-*"} 0 }
+! { dg-warning "Nonconforming tab character in column 1 of line 11" "Nonconforming tab" {target "*-*-*"} 0 }