re PR libfortran/47285 (G format outputs wrong number of characters when decimal...
authorJerry DeLisle <jvdelisle@gcc.gnu.org>
Fri, 28 Jan 2011 22:35:43 +0000 (22:35 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Fri, 28 Jan 2011 22:35:43 +0000 (22:35 +0000)
2011-01-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR libgfortran/47285
* gfortran.dg/fmt_g.f: New test.

From-SVN: r169375

gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/fmt_g.f [new file with mode: 0644]

index 892a5437a20ed8142f97782e27550a708690f66c..64a70322f24b61c1b2a77a8c2be6266a46e52fe4 100644 (file)
@@ -1,3 +1,8 @@
+2011-01-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR libgfortran/47285
+       * gfortran.dg/fmt_g.f: New test.
+
 2011-01-28  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/47507
diff --git a/gcc/testsuite/gfortran.dg/fmt_g.f b/gcc/testsuite/gfortran.dg/fmt_g.f
new file mode 100644 (file)
index 0000000..55b094a
--- /dev/null
@@ -0,0 +1,43 @@
+! { dg-do run }
+! PR47285 G format outputs wrong number of characters.
+! Test case prepared by Jerry DeLisle <jvdelisle@gcc.gnu.org>
+       PROGRAM FOO
+       character(len=50) :: buffer
+
+       WRITE(buffer,"(G0.5,'<')") -10000.
+       if (buffer.ne."-10000.<") call abort
+       WRITE(buffer,"(G1.5E5,'<')") -10000.
+       if (buffer.ne."*<") call abort
+       WRITE(buffer,"(G2.5E5,'<')") -10000.
+       if (buffer.ne."**<") call abort
+       WRITE(buffer,"(G3.5E5,'<')") -10000.
+       if (buffer.ne."***<") call abort
+       WRITE(buffer,"(G4.5E5,'<')") -10000.
+       if (buffer.ne."****<") call abort
+       WRITE(buffer,"(G5.5E5,'<')") -10000.
+       if (buffer.ne."*****<") call abort
+       WRITE(buffer,"(G6.5E5,'<')") -10000.
+       if (buffer.ne."******<") call abort
+       WRITE(buffer,"(G7.5E5,'<')") -10000.
+       if (buffer.ne."*******<") call abort
+       WRITE(buffer,"(G8.5E5,'<')") -10000.
+       if (buffer.ne."********<") call abort
+       WRITE(buffer,"(G9.5E5,'<')") -10000.
+       if (buffer.ne."*********<") call abort
+       WRITE(buffer,"(G10.5E5,'<')") -10000.
+       if (buffer.ne."**********<") call abort
+       WRITE(buffer,"(G11.5E5,'<')") -10000.
+       if (buffer.ne."***********<") call abort
+       WRITE(buffer,"(G12.5E5,'<')") -10000.
+       if (buffer.ne."************<") call abort
+       WRITE(buffer,"(G13.5E5,'<')") -10000.
+       if (buffer.ne."-10000.      <") call abort
+       WRITE(buffer,"(G14.5E5,'<')") -10000.
+       if (buffer.ne." -10000.      <") call abort
+       WRITE(buffer,"(G15.5E5,'<')") -10000.
+       if (buffer.ne."  -10000.      <") call abort
+       WRITE(buffer,"(G16.5E5,'<')") -10000.
+       if (buffer.ne."   -10000.      <") call abort
+
+       STOP
+       END