diff options
author | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-09 18:44:07 +0000 |
---|---|---|
committer | pinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-04-09 18:44:07 +0000 |
commit | fc7645ef69c8f4a2e1e4a2f5b98424eacadbe5bb (patch) | |
tree | c994c1aa2ba0c5a038c6f170fcd097a4bd19d085 /gcc | |
parent | a6c787e5b7ad773092038330079c7c62122ae7f7 (diff) | |
download | gcc-fc7645ef69c8f4a2e1e4a2f5b98424eacadbe5bb.tar.gz |
PR fortran/13257
fortran/ChangeLog:
* io.c (check_format): Allow an optional comma
between descriptors.
libgfortran/ChangeLog:
* format.c (parse_format_list): Allow an optional comma
between descriptors.
testsuite/ChangeLog:
* comma_format_extension_[1234].f: New tests.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97919 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/io.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/comma_format_extension_1.f | 11 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/comma_format_extension_2.f | 10 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/comma_format_extension_3.f | 16 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/comma_format_extension_4.f | 10 |
7 files changed, 63 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 95e2cee227a..5912cd6d1db 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2005-04-09 Andrew Pinski <pinskia@physics.uc.edu> + + PR fortran/13257 + * io.c (check_format): Allow an optional comma + between descriptors. + 2005-04-09 Francois-Xavier Coudert <coudert@clipper.ens.fr> * match.c (match_arithmetic_if): Remove gfc_ prefix and correct diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index 12650f90f24..90eb855016d 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -433,6 +433,7 @@ check_format (void) format_item: /* In this state, the next thing has to be a format item. */ t = format_lex (); +format_item_1: switch (t) { case FMT_POSINT: @@ -701,8 +702,10 @@ between_desc: goto syntax; default: - error = "Missing comma"; - goto syntax; + if (gfc_notify_std (GFC_STD_GNU, "Extension: Missing comma at %C") + == FAILURE) + return FAILURE; + goto format_item_1; } optional_comma: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0cee677a70e..63ea6a80ca4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-04-09 Andrew Pinski <pinskia@physics.uc.edu> + + PR fortran/13257 + * comma_format_extension_[1234].f: New tests. + 2005-04-09 Jakub Jelinek <jakub@redhat.com> * gcc.dg/tree-ssa/stdarg-1.c: New test. diff --git a/gcc/testsuite/gfortran.dg/comma_format_extension_1.f b/gcc/testsuite/gfortran.dg/comma_format_extension_1.f new file mode 100644 index 00000000000..a3a5a98f155 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/comma_format_extension_1.f @@ -0,0 +1,11 @@ +! { dg-do compile } +! { dg-options "" } +! test that the extension for a missing comma is accepted + + subroutine mysub + dimension ibar(5) + write (3,1001) ( ibar(m), m = 1, 5 ) + + 1001 format (/5x,' ',i4' '/ ) + return + end diff --git a/gcc/testsuite/gfortran.dg/comma_format_extension_2.f b/gcc/testsuite/gfortran.dg/comma_format_extension_2.f new file mode 100644 index 00000000000..7eb17b58434 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/comma_format_extension_2.f @@ -0,0 +1,10 @@ +! { dg-do compile } +! test that the extension for a missing comma is accepted + + subroutine mysub + dimension ibar(5) + write (3,1001) ( ibar(m), m = 1, 5 ) + + 1001 format (/5x,' ',i4' '/ ) ! { dg-warning "Missing comma" } + return + end diff --git a/gcc/testsuite/gfortran.dg/comma_format_extension_3.f b/gcc/testsuite/gfortran.dg/comma_format_extension_3.f new file mode 100644 index 00000000000..15ee18905c4 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/comma_format_extension_3.f @@ -0,0 +1,16 @@ +! PR libfortran/15332 and PR fortran/13257 +! We used to accept this as an extension but +! did do the correct thing at runtime. +! Note the missing , before i1 in the format. +! { do-do run } +! { dg-options "" } + character*12 c + + write (c,100) 0, 1 + if (c .ne. 'i = 0, j = 1') call abort + + write (c,100) 0 + if (c .ne. 'i = 0 ') call abort + + 100 format ('i = 'i1,:,', j = ',i1) + end diff --git a/gcc/testsuite/gfortran.dg/comma_format_extension_4.f b/gcc/testsuite/gfortran.dg/comma_format_extension_4.f new file mode 100644 index 00000000000..5f6ecc5073b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/comma_format_extension_4.f @@ -0,0 +1,10 @@ +! PR fortran/13257 +! Note the missing , before i1 in the format. +! { do-do run } +! { dg-options "" } + character*5 c + write (c,1001) 1 + if (c .ne. ' 1 ') call abort + + 1001 format (' ',i4' ') + end |