summaryrefslogtreecommitdiffstats
path: root/libgfortran
diff options
context:
space:
mode:
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-28 05:14:05 +0000
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-28 05:14:05 +0000
commit6e48ddb8c320ba65abf84916691b22b619fa0f10 (patch)
tree784aa5a8321e597079f249cda1afed864f63db7e /libgfortran
parent8b5eeb907d951fcb1494a6a598e14fca3062a727 (diff)
downloadppe42-gcc-6e48ddb8c320ba65abf84916691b22b619fa0f10.tar.gz
ppe42-gcc-6e48ddb8c320ba65abf84916691b22b619fa0f10.zip
2006-08-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/28354 * io/write.c: Check for special case of zero precision in format and pre-round the real value. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116502 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgfortran')
-rw-r--r--libgfortran/ChangeLog6
-rw-r--r--libgfortran/io/write.c9
2 files changed, 15 insertions, 0 deletions
diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog
index 773f80636db..7151344be7e 100644
--- a/libgfortran/ChangeLog
+++ b/libgfortran/ChangeLog
@@ -1,3 +1,9 @@
+2006-08-27 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libgfortran/28354
+ * io/write.c: Check for special case of zero precision in format
+ and pre-round the real value.
+
2006-08-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR libgfortran/25828
diff --git a/libgfortran/io/write.c b/libgfortran/io/write.c
index bee367c49ae..79018ccd4fa 100644
--- a/libgfortran/io/write.c
+++ b/libgfortran/io/write.c
@@ -426,6 +426,15 @@ output_float (st_parameter_dt *dtp, const fnode *f, GFC_REAL_LARGEST value)
if (value < 0)
value = -value;
+ /* Special case when format specifies no digits after the decimal point. */
+ if (d == 0)
+ {
+ if (value < 0.5)
+ value = 0.0;
+ else if (value < 1.0)
+ value = value + 0.5;
+ }
+
/* Printf always prints at least two exponent digits. */
if (value == 0)
edigits = 2;
OpenPOWER on IntegriCloud