Commit 17f62b7e by Jim MacArthur Committed by Jerry DeLisle

re PR fortran/89103 (Allow blank format items in format strings)

2019-06-19  Jim MacArthur  <jim.macarthur@codethink.co.uk>
	    Mark Eggleston  <mark.eggleston@codethink.com>

	PR fortran/89103
	* gfortran.texi: Add -fdec-blank-format-item
	* invoke.texi: Add option to list of options.
	* invoke.texi: Add to section on Commas in FORMAT specifications.
	* io.c (check_format): At FMT_RPAREN goto finished if
	-fdec-blank-format-item otherwise set error string.
	* lang.opt: Add new option.
	* options.c (set_dec_flags): Add SET_BITFLAG for
	flag_dec_format_defaults.

	* gfortran.dg/dec_format_empty_item_1.f: New test.
	* gfortran.dg/dec_format_empty_item_2.f: New test.
	* gfortran.dg/dec_format_empty_item_3.f: New test.

Co-Authored-By: Mark Eggleston <mark.eggleston@codethink.com>

From-SVN: r272467
parent eb54b267
2019-06-19 Jim MacArthur <jim.macarthur@codethink.co.uk>
Mark Eggleston <mark.eggleston@codethink.com>
PR fortran/89103
* gfortran.texi: Add -fdec-blank-format-item
* invoke.texi: Add option to list of options.
* invoke.texi: Add to section on Commas in FORMAT specifications.
* io.c (check_format): At FMT_RPAREN goto finished if
-fdec-blank-format-item otherwise set error string.
* lang.opt: Add new option.
* options.c (set_dec_flags): Add SET_BITFLAG for
flag_dec_format_defaults.
2019-06-18 Julian Brown <julian@codesourcery.com>
PR fortran/90921
......
......@@ -1761,11 +1761,16 @@ When omitted, the count is implicitly assumed to be one.
To support legacy codes, GNU Fortran allows the comma separator
to be omitted immediately before and after character string edit
descriptors in @code{FORMAT} statements.
descriptors in @code{FORMAT} statements. A comma with no following format
decriptor is permited if the @option{-fdec-blank-format-item} is given on
the command line. This is considered non-conforming code and is
discouraged.
@smallexample
PRINT 10, 2, 3
10 FORMAT ('FOO='I1' BAR='I2)
print 20, 5, 6
20 FORMAT (I3, I3,)
@end smallexample
......
......@@ -119,10 +119,10 @@ by type. Explanations are in the following sections.
@gccoptlist{-fall-intrinsics -fbackslash -fcray-pointer -fd-lines-as-code @gol
-fd-lines-as-comments -fdec -fdec-structure -fdec-intrinsic-ints @gol
-fdec-static -fdec-math -fdec-include -fdec-format-defaults @gol
-fdefault-double-8 -fdefault-integer-8 -fdefault-real-8 -fdefault-real-10 @gol
-fdefault-real-16 -fdollar-ok -ffixed-line-length-@var{n} @gol
-ffixed-line-length-none -fpad-source -ffree-form @gol
-ffree-line-length-@var{n} -ffree-line-length-none @gol
-fdec-blank-format-item -fdefault-double-8 -fdefault-integer-8 @gol
-fdefault-real-8 -fdefault-real-10 -fdefault-real-16 -fdollar-ok @gol
-ffixed-line-length-@var{n} -ffixed-line-length-none -fpad-source @gol
-ffree-form -ffree-line-length-@var{n} -ffree-line-length-none @gol
-fimplicit-none -finteger-4-integer-8 -fmax-identifier-length @gol
-fmodule-private -ffixed-form -fno-range-check -fopenacc -fopenmp @gol
-freal-4-real-10 -freal-4-real-16 -freal-4-real-8 -freal-8-real-10 @gol
......@@ -289,6 +289,11 @@ be on a single line and can use line continuations.
Enable format specifiers F, G and I to be used without width specifiers,
default widths will be used instead.
@item -fdec-blank-format-item
@opindex @code{fdec-blank-format-item}
Enable a blank format item at the end of a format specification i.e. nothing
following the final comma.
@item -fdollar-ok
@opindex @code{fdollar-ok}
@cindex @code{$}
......
......@@ -762,6 +762,15 @@ format_item_1:
error = unexpected_end;
goto syntax;
case FMT_RPAREN:
if (flag_dec_blank_format_item)
goto finished;
else
{
error = G_("Missing item in format string at %L");
goto syntax;
}
default:
error = unexpected_element;
goto syntax;
......
......@@ -444,6 +444,10 @@ fdec
Fortran Var(flag_dec)
Enable all DEC language extensions.
fdec-blank-format-item
Fortran Var(flag_dec_blank_format_item)
Enable the use of blank format items in format strings.
fdec-include
Fortran Var(flag_dec_include)
Enable legacy parsing of INCLUDE as statement.
......
......@@ -75,6 +75,7 @@ set_dec_flags (int value)
SET_BITFLAG (flag_dec_math, value, value);
SET_BITFLAG (flag_dec_include, value, value);
SET_BITFLAG (flag_dec_format_defaults, value, value);
SET_BITFLAG (flag_dec_blank_format_item, value, value);
}
/* Finalize DEC flags. */
......
2019-06-19 Jim MacArthur <jim.macarthur@codethink.co.uk>
Mark Eggleston <mark.eggleston@codethink.com>
PR fortran/89103
* gfortran.dg/dec_format_empty_item_1.f: New test.
* gfortran.dg/dec_format_empty_item_2.f: New test.
* gfortran.dg/dec_format_empty_item_3.f: New test.
2019-06-19 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org>
* gcc.target/aarch64/pr88834.c: Move from here...
......
! { dg-do run }
! { dg-options "-fdec" }
!
! Test blank/empty format items in format string
!
! Test case contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
! Modified by Mark Eggleston <mark.eggleston@codethink.com>
!
PROGRAM blank_format_items
INTEGER A/0/
OPEN(1, status="scratch")
WRITE(1, 10) 100
REWIND(1)
READ(1, 10) A
IF (a.NE.100) STOP 1
PRINT 10, A
10 FORMAT( I5,)
END
! { dg-do run }
! { dg-options "-fdec-blank-format-item" }
!
! Test blank/empty format items in format string
!
! Test case contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
! Modified by Mark Eggleston <mark.eggleston@codethink.com>
!
PROGRAM blank_format_items
INTEGER A/0/
OPEN(1, status="scratch")
WRITE(1, 10) 100
REWIND(1)
READ(1, 10) A
IF (a.NE.100) STOP 1
PRINT 10, A
10 FORMAT( I5,)
END
! { dg-do compile }
! { dg-options "-fdec -fno-dec-blank-format-item" }
!
! Test blank/empty format items in format string
!
! Test case contributed by Jim MacArthur <jim.macarthur@codethink.co.uk>
! Modified by Mark Eggleston <mark.eggleston@codethink.com>
!
PROGRAM blank_format_items
INTEGER A/0/
OPEN(1, status="scratch")
WRITE(1, 10) 100 ! { dg-error "FORMAT label 10 at" }
REWIND(1)
READ(1, 10) A ! { dg-error "FORMAT label 10 at" }
IF (a.NE.100) STOP 1
PRINT 10, A ! { dg-error "FORMAT label 10 at" }
10 FORMAT( I5,) ! { dg-error "Missing item" }
END
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment