re PR fortran/34899 (Continuation lines with <tab><number> not recognized)

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
This commit is contained in:
Tobias Burnus 2008-01-22 08:33:46 +01:00 committed by Tobias Burnus
parent 87a64f537b
commit fd1935d5e1
5 changed files with 49 additions and 8 deletions

View 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

View 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}

View 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++;

View 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

View File

@ -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 }