aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/testsuite/ChangeLog9
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_g0_1.f0820
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_g0_2.f0811
-rw-r--r--gcc/testsuite/gfortran.dg/fmt_g0_3.f087
4 files changed, 47 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a92d16e..cc02b94 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,12 @@
+2008-06-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/36420
+ PR fortran/36421
+ PR fortran/36422
+ * gfortran.dg/fmt_g0_1.f08: New test.
+ * gfortran.dg/fmt_g0_2.f08: New test.
+ * gfortran.dg/fmt_g0_3.f08: New test.
+
2008-06-07 Xinliang David Li <davidxl@google.com>
PR/36440
diff --git a/gcc/testsuite/gfortran.dg/fmt_g0_1.f08 b/gcc/testsuite/gfortran.dg/fmt_g0_1.f08
new file mode 100644
index 0000000..c85ee2d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/fmt_g0_1.f08
@@ -0,0 +1,20 @@
+! { dg-do run }
+! PR36420 Fortran 2008: g0 edit descriptor
+! Test case provided by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ character(25) :: string = "(g0,g0,g0)"
+ character(33) :: buffer
+ write(buffer, '(g0,g0,g0)') ':',12340,':'
+ if (buffer.ne.":12340:") call abort
+ write(buffer, string) ':',0,':'
+ if (buffer.ne.":0:") call abort
+ write(buffer, string) ':',1.0/3.0,':'
+ if (buffer.ne.": 0.33333334 :") call abort
+ write(buffer, '(1x,a,g0,a)') ':',1.0/3.0,':'
+ if (buffer.ne." : 0.33333334 :") call abort
+ write(buffer, string) ':',"hello",':'
+ if (buffer.ne.":hello:") call abort
+ write(buffer, "(g0,g0,g0,g0)") ':',.true.,.false.,':'
+ if (buffer.ne.":TF:") call abort
+ write(buffer, "(g0,g0,',',g0,g0)") '(',( 1.2345, 2.4567 ),')'
+ if (buffer.ne."( 1.2345001 , 2.4567001 )") call abort
+end
diff --git a/gcc/testsuite/gfortran.dg/fmt_g0_2.f08 b/gcc/testsuite/gfortran.dg/fmt_g0_2.f08
new file mode 100644
index 0000000..c19e3f2
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/fmt_g0_2.f08
@@ -0,0 +1,11 @@
+! { dg-do run }
+! { dg-options "-std=f95 -pedantic" }
+! { dg-shouldfail "Zero width in format descriptor" }
+! PR36420 Fortran 2008: g0 edit descriptor
+! Test case provided by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ character(25) :: string = "(g0,g0,g0)"
+ character(33) :: buffer
+ write(buffer, string) ':',0,':'
+ if (buffer.ne.":0:") call abort
+end
+! { dg-output "Fortran runtime error: Zero width in format descriptor(\n|\r\n|\r)" }
diff --git a/gcc/testsuite/gfortran.dg/fmt_g0_3.f08 b/gcc/testsuite/gfortran.dg/fmt_g0_3.f08
new file mode 100644
index 0000000..a84b1f1
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/fmt_g0_3.f08
@@ -0,0 +1,7 @@
+! { dg-do compile }
+! { dg-options "-std=f95" }! PR36420 Fortran 2008: g0 edit descriptor
+! Test case provided by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ character(25) :: string = "(g0,g0,g0)"
+ character(33) :: buffer
+ write(buffer, '(g0,g0,g0)') ':',12340,':' ! { dg-error "Fortran F2008:" }
+end