diff options
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 95e2cee..5912cd6 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 12650f9..90eb855 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 0cee677..63ea6a8 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 0000000..a3a5a98 --- /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 0000000..7eb17b5 --- /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 0000000..15ee189 --- /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 0000000..5f6ecc5 --- /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 |