mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-23 03:29:14 +08:00
re PR fortran/21302 (Max line length in free form mode)
2005-11-30 Bernhard Fischer <rep.nop@aon.at> PR fortran/21302 * lang.opt: New options -ffree-line-length- and -ffree-line-length-none. * gfortran.h: Add free_line_length and add description of free_line_length and fixed_line_length. * options.c (gfc_init_options, gfc_handle_option): Initialize and set free_line_length and fixed_line_length. * scanner.c (load_line): Set free_line_length to 132 and fixed_line_length to 72 or user requested values. * scanner.c: Typo in comment. * invoke.texi: Document -ffree-line-length- and -ffree-line-length-none gfortran.dg/line_length_1.f: New test: gfortran.dg/line_length_2.f90: Ditto. From-SVN: r107745
This commit is contained in:
parent
4b860192e4
commit
16ab8e74da
@ -1,3 +1,18 @@
|
||||
2005-11-30 Bernhard Fischer <rep.nop@aon.at>
|
||||
|
||||
PR fortran/21302
|
||||
* lang.opt: New options -ffree-line-length- and -ffree-line-length-none.
|
||||
* gfortran.h: Add free_line_length and add description of
|
||||
free_line_length and fixed_line_length.
|
||||
* options.c (gfc_init_options, gfc_handle_option): Initialize
|
||||
and set free_line_length and fixed_line_length.
|
||||
* scanner.c (load_line): Set free_line_length to 132 and
|
||||
fixed_line_length to 72 or user requested values.
|
||||
* scanner.c: Typo in comment.
|
||||
* invoke.texi: Document -ffree-line-length- and
|
||||
-ffree-line-length-none
|
||||
|
||||
|
||||
2005-11-30 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/15809
|
||||
|
@ -1460,7 +1460,20 @@ typedef struct
|
||||
{
|
||||
char *module_dir;
|
||||
gfc_source_form source_form;
|
||||
int fixed_line_length;
|
||||
/* When fixed_line_length or free_line_length are 0, the whole line is used.
|
||||
|
||||
Default is -1, the maximum line length mandated by the respective source
|
||||
form is used:
|
||||
for FORM_FREE GFC_MAX_LINE (132)
|
||||
else 72.
|
||||
|
||||
If fixed_line_length or free_line_length is not 0 nor -1 then the user has
|
||||
requested a specific line-length.
|
||||
|
||||
If the user requests a fixed_line_length <7 then gfc_init_options()
|
||||
emits a fatal error. */
|
||||
int fixed_line_length; /* maximum line length in fixed-form. */
|
||||
int free_line_length; /* maximum line length in free-form. */
|
||||
int max_identifier_length;
|
||||
int verbose;
|
||||
|
||||
|
@ -119,6 +119,7 @@ by type. Explanations are in the following sections.
|
||||
-fdollar-ok -fimplicit-none -fmax-identifier-length @gol
|
||||
-std=@var{std} -fd-lines-as-code -fd-lines-as-comments @gol
|
||||
-ffixed-line-length-@var{n} -ffixed-line-length-none @gol
|
||||
-ffree-line-length-@var{n} -ffree-line-length-none @gol
|
||||
-fdefault-double-8 -fdefault-integer-8 -fdefault-real-8 @gol
|
||||
-fcray-pointer }
|
||||
|
||||
@ -251,6 +252,20 @@ to them to fill out the line.
|
||||
@option{-ffixed-line-length-0} means the same thing as
|
||||
@option{-ffixed-line-length-none}.
|
||||
|
||||
@cindex -ffree-line-length-@var{n} option
|
||||
@cindex options, -ffree-line-length-@var{n}
|
||||
@item -ffree-line-length-@var{n}
|
||||
@cindex source file format
|
||||
@cindex lines, length
|
||||
@cindex length of source lines
|
||||
@cindex free form
|
||||
@cindex limits, lengths of source lines
|
||||
Set column after which characters are ignored in typical free-form
|
||||
lines in the source file. For free-form, the default value is 132.
|
||||
@var{n} may be @samp{none}, meaning that the entire line is meaningful.
|
||||
@option{-ffree-line-length-0} means the same thing as
|
||||
@option{-ffree-line-length-none}.
|
||||
|
||||
@cindex -fmax-identifier-length=@var{n} option
|
||||
@cindex option -fmax-identifier-length=@var{n}
|
||||
@item -fmax-identifier-length=@var{n}
|
||||
|
@ -141,6 +141,14 @@ ffixed-line-length-
|
||||
Fortran RejectNegative Joined UInteger
|
||||
-ffixed-line-length-<n> Use n as character line width in fixed mode
|
||||
|
||||
ffree-line-length-none
|
||||
Fortran RejectNegative
|
||||
Allow arbitrary character line width in free mode
|
||||
|
||||
ffree-line-length-
|
||||
Fortran RejectNegative Joined UInteger
|
||||
-ffree-line-length-<n> Use n as character line width in free mode
|
||||
|
||||
fmax-identifier-length=
|
||||
Fortran RejectNegative Joined UInteger
|
||||
-fmax-identifier-length=<n> Maximum identifier length
|
||||
|
@ -46,7 +46,8 @@ gfc_init_options (unsigned int argc ATTRIBUTE_UNUSED,
|
||||
gfc_source_file = NULL;
|
||||
gfc_option.module_dir = NULL;
|
||||
gfc_option.source_form = FORM_UNKNOWN;
|
||||
gfc_option.fixed_line_length = 72;
|
||||
gfc_option.fixed_line_length = -1;
|
||||
gfc_option.free_line_length = -1;
|
||||
gfc_option.max_identifier_length = GFC_MAX_SYMBOL_LEN;
|
||||
gfc_option.verbose = 0;
|
||||
|
||||
@ -423,10 +424,28 @@ gfc_handle_option (size_t scode, const char *arg, int value)
|
||||
gfc_option.source_form = FORM_FIXED;
|
||||
break;
|
||||
|
||||
case OPT_ffixed_line_length_none:
|
||||
gfc_option.fixed_line_length = 0;
|
||||
break;
|
||||
|
||||
case OPT_ffixed_line_length_:
|
||||
if (value != 0 && value < 7)
|
||||
gfc_fatal_error ("Fixed line length must be at least seven.");
|
||||
gfc_option.fixed_line_length = value;
|
||||
break;
|
||||
|
||||
case OPT_ffree_form:
|
||||
gfc_option.source_form = FORM_FREE;
|
||||
break;
|
||||
|
||||
case OPT_ffree_line_length_none:
|
||||
gfc_option.free_line_length = 0;
|
||||
break;
|
||||
|
||||
case OPT_ffree_line_length_:
|
||||
gfc_option.free_line_length = value;
|
||||
break;
|
||||
|
||||
case OPT_funderscoring:
|
||||
gfc_option.flag_underscoring = value;
|
||||
break;
|
||||
@ -459,16 +478,6 @@ gfc_handle_option (size_t scode, const char *arg, int value)
|
||||
gfc_option.flag_repack_arrays = value;
|
||||
break;
|
||||
|
||||
case OPT_ffixed_line_length_none:
|
||||
gfc_option.fixed_line_length = 0;
|
||||
break;
|
||||
|
||||
case OPT_ffixed_line_length_:
|
||||
if (value != 0 && value < 7)
|
||||
gfc_fatal_error ("Fixed line length must be at least seven.");
|
||||
gfc_option.fixed_line_length = value;
|
||||
break;
|
||||
|
||||
case OPT_fmax_identifier_length_:
|
||||
if (value > GFC_MAX_SYMBOL_LEN)
|
||||
gfc_fatal_error ("Maximum supported idenitifier length is %d",
|
||||
|
@ -694,7 +694,7 @@ gfc_gobble_whitespace (void)
|
||||
In fixed mode, we expand a tab that occurs within the statement
|
||||
label region to expand to spaces that leave the next character in
|
||||
the source region.
|
||||
load_line returns wether the line was truncated. */
|
||||
load_line returns whether the line was truncated. */
|
||||
|
||||
static int
|
||||
load_line (FILE * input, char **pbuf, int *pbuflen)
|
||||
@ -703,11 +703,25 @@ load_line (FILE * input, char **pbuf, int *pbuflen)
|
||||
int trunc_flag = 0;
|
||||
char *buffer;
|
||||
|
||||
/* Determine the maximum allowed line length. */
|
||||
/* Determine the maximum allowed line length.
|
||||
The default for free-form is GFC_MAX_LINE, for fixed-form or for
|
||||
unknown form it is 72. Refer to the documentation in gfc_option_t. */
|
||||
if (gfc_current_form == FORM_FREE)
|
||||
maxlen = GFC_MAX_LINE;
|
||||
{
|
||||
if (gfc_option.free_line_length == -1)
|
||||
maxlen = GFC_MAX_LINE;
|
||||
else
|
||||
maxlen = gfc_option.free_line_length;
|
||||
}
|
||||
else if (gfc_current_form == FORM_FIXED)
|
||||
{
|
||||
if (gfc_option.fixed_line_length == -1)
|
||||
maxlen = 72;
|
||||
else
|
||||
maxlen = gfc_option.fixed_line_length;
|
||||
}
|
||||
else
|
||||
maxlen = gfc_option.fixed_line_length;
|
||||
maxlen = 72;
|
||||
|
||||
if (*pbuf == NULL)
|
||||
{
|
||||
@ -778,7 +792,7 @@ load_line (FILE * input, char **pbuf, int *pbuflen)
|
||||
}
|
||||
}
|
||||
else if (i >= maxlen)
|
||||
{
|
||||
{
|
||||
/* Truncate the rest of the line. */
|
||||
for (;;)
|
||||
{
|
||||
@ -1055,7 +1069,7 @@ load_file (const char *filename, bool initial)
|
||||
line = NULL;
|
||||
line_len = 0;
|
||||
|
||||
for (;;)
|
||||
for (;;)
|
||||
{
|
||||
int trunc = load_line (input, &line, &line_len);
|
||||
|
||||
|
@ -1,4 +1,8 @@
|
||||
2005-11-30 Richard Guenther <rguenther@suse.de>
|
||||
2005-11-30 Bernhard Fischer <rep.nop@aon.at>
|
||||
|
||||
PR fortran/21302
|
||||
* gfortran.dg/line_length_1.f: New test.
|
||||
* gfortran.dg/line_length_2.f90: Ditto.
|
||||
|
||||
PR tree-optimization/21655
|
||||
* g++.dg/tree-ssa/pr14814.C: Remove XFAIL.
|
||||
|
7
gcc/testsuite/gfortran.dg/line_length_1.f
Normal file
7
gcc/testsuite/gfortran.dg/line_length_1.f
Normal file
@ -0,0 +1,7 @@
|
||||
! Testcase for -ffixed-line-length-none
|
||||
! { dg-do compile }
|
||||
! { dg-options "-ffixed-line-length-none" }
|
||||
program one
|
||||
if (abs(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa).gt.999.d0.or.abs(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb).gt.999.d0.or.abs(cccccccccccccccccccc).gt.999.d0) THEN
|
||||
endif
|
||||
end program one
|
8
gcc/testsuite/gfortran.dg/line_length_2.f90
Normal file
8
gcc/testsuite/gfortran.dg/line_length_2.f90
Normal file
@ -0,0 +1,8 @@
|
||||
! Testcase for -ffree-line-length-none
|
||||
! See PR fortran/21302
|
||||
! { dg-do compile }
|
||||
! { dg-options "-ffree-line-length-none" }
|
||||
program two
|
||||
if (abs(aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa).gt.999.d0.or.abs(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb).gt.999.d0.or.abs(cccccccccccccccccccc).gt.999.d0) THEN
|
||||
endif
|
||||
end program two
|
Loading…
Reference in New Issue
Block a user