aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <coudert@clipper.ens.fr>2005-02-27 20:47:12 +0100
committerTobias Schlüter <tobi@gcc.gnu.org>2005-02-27 20:47:12 +0100
commitd8f92af2cf130270d367242c9e1ac34004e6c3bb (patch)
treec393eca17eb4709f5673d05271affeed243cf7f3
parent6e09312586c862bcb4ab336e20c835ad54d4b607 (diff)
downloadgcc-d8f92af2cf130270d367242c9e1ac34004e6c3bb.zip
gcc-d8f92af2cf130270d367242c9e1ac34004e6c3bb.tar.gz
gcc-d8f92af2cf130270d367242c9e1ac34004e6c3bb.tar.bz2
re PR libfortran/20101 (zero prints incorrectly with 1pe12.4)
libgfortran/ 2005-02-27 Fran��ois-Xavier Coudert <coudert@clipper.ens.fr> PR libfortran/20101 * write.c (output_float): Adding special check for value 0.0 in PE format. gcc/testsuite/ 2005-02-27 Fran��ois-Xavier Coudert <coudert@clipper.ens.fr> PR libfortran/20101 * gfortran.dg/write_0_pe_format.f90: New test. From-SVN: r95628
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/write_0_pe_format.f909
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/write.c3
4 files changed, 22 insertions, 1 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index aebf34b..5c55f5f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-27 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20101
+ * gfortran.dg/write_0_pe_format.f90: New test.
+
2005-02-27 Jakub Jelinek <jakub@redhat.com>
PR c++/20206
diff --git a/gcc/testsuite/gfortran.dg/write_0_pe_format.f90 b/gcc/testsuite/gfortran.dg/write_0_pe_format.f90
new file mode 100644
index 0000000..3890c32
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/write_0_pe_format.f90
@@ -0,0 +1,9 @@
+! { dg-do run }
+! PR libfortran/20101
+! With format "PE", 0.0 must still have "+00" as exponent
+character(len=10) :: c1, c2
+write(c1,"(1pe9.2)") 0.0
+write(c2,"(1pe9.2)") 1.0
+if (trim(adjustl(c1)) .ne. "0.00E+00") call abort()
+if (trim(adjustl(c2)) .ne. "1.00E+00") call abort()
+end
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index c7b5821..052664c 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2005-02-27 Francois-Xavier Coudert <coudert@clipper.ens.fr>
+
+ PR libfortran/20101
+ * write.c (output_float): Added special check for value 0.0 in
+ PE format.
+
2004-02-27 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de>
* io/write.c (output_float): Fix typo in condition.
diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c
index d4ee605..9b71cc5 100644
--- a/libgfortran/io/write.c
+++ b/libgfortran/io/write.c
@@ -375,7 +375,8 @@ output_float (fnode *f, double value, int len)
case FMT_E:
case FMT_D:
i = g.scale_factor;
- e -= i;
+ if (value != 0.0)
+ e -= i;
if (i < 0)
{
nbefore = 0;