diff options
author | Francois-Xavier Coudert <coudert@clipper.ens.fr> | 2005-03-16 19:09:03 +0100 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2005-03-16 18:09:03 +0000 |
commit | dcdeec06a01f230623864bbfa564c71d9f11f201 (patch) | |
tree | b2c3885a1b4b90ae9295856352a0b4b34bc8c6a3 | |
parent | e4d5432a7343e870ebcee2fb510afc694dcc80ac (diff) | |
download | gcc-dcdeec06a01f230623864bbfa564c71d9f11f201.zip gcc-dcdeec06a01f230623864bbfa564c71d9f11f201.tar.gz gcc-dcdeec06a01f230623864bbfa564c71d9f11f201.tar.bz2 |
write.c (output_float): special check when writing 0.0 with EN and ES formats.
* write.c (output_float): special check when writing 0.0 with
EN and ES formats.
* pr20480.f90: New test.
From-SVN: r96566
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr20480.f90 | 9 | ||||
-rw-r--r-- | libgfortran/ChangeLog | 6 | ||||
-rw-r--r-- | libgfortran/io/write.c | 6 |
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; |