aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr20480.f909
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/write.c6
4 files changed, 24 insertions, 2 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 466b77e..e3e9cec 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-03-16 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20480
+ * pr20480.f90: New test.
+
2005-03-16 Richard Henderson <rth@redhat.com>
PR middle-end/15700
diff --git a/gcc/testsuite/gfortran.dg/pr20480.f90 b/gcc/testsuite/gfortran.dg/pr20480.f90
new file mode 100644
index 0000000..12e5300
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr20480.f90
@@ -0,0 +1,9 @@
+! { dg-do run }
+! PR libfortran/20480
+! fxcoudert@gcc.gnu.org
+ character(len=80) c
+ write (c,'(ES12.3)') 0.0
+ if (trim(adjustl(c)) .ne. '0.000E+00') call abort ()
+ write (c,'(EN12.3)') 0.0
+ if (trim(adjustl(c)) .ne. '0.000E+00') call abort ()
+ end
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index ac7e067..43a2d9d 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2005-03-16 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20480
+ * write.c (output_float): special check when writing 0.0 with
+ EN and ES formats.
+
2005-03-11 Francois-Xavier Coudert <coudert@clipper.ens.fr>
PR libfortran/20124
diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c
index 9c255d7..88e5280 100644
--- a/libgfortran/io/write.c
+++ b/libgfortran/io/write.c
@@ -411,7 +411,8 @@ output_float (fnode *f, double value, int len)
case FMT_EN:
/* The exponent must be a multiple of three, with 1-3 digits before
the decimal point. */
- e--;
+ if (value != 0.0)
+ e--;
if (e >= 0)
nbefore = e % 3;
else
@@ -428,7 +429,8 @@ output_float (fnode *f, double value, int len)
break;
case FMT_ES:
- e--;
+ if (value != 0.0)
+ e--;
nbefore = 1;
nzero = 0;
nafter = d;