summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-09 18:44:07 +0000
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2005-04-09 18:44:07 +0000
commitfc7645ef69c8f4a2e1e4a2f5b98424eacadbe5bb (patch)
treec994c1aa2ba0c5a038c6f170fcd097a4bd19d085 /gcc
parenta6c787e5b7ad773092038330079c7c62122ae7f7 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/fortran/io.c7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/comma_format_extension_1.f11
-rw-r--r--gcc/testsuite/gfortran.dg/comma_format_extension_2.f10
-rw-r--r--gcc/testsuite/gfortran.dg/comma_format_extension_3.f16
-rw-r--r--gcc/testsuite/gfortran.dg/comma_format_extension_4.f10
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