2008-12-04 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Dec 2008 04:07:45 +0000 (04:07 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Dec 2008 04:07:45 +0000 (04:07 +0000)
PR fortran/38285
* write_float.def (WRITE_FLOAT): Zero the float value for special case
only if scale_factor = 0.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@142455 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/io/write_float.def

index 36c0098..bb860d4 100644 (file)
@@ -1,3 +1,9 @@
+2008-12-04  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/38285
+       * write_float.def (WRITE_FLOAT): Zero the float value for special case
+       only if scale_factor = 0.
+       
 2008-11-23  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR libfortran/38234
index 8bb4123..d8799f2 100644 (file)
@@ -760,7 +760,8 @@ sprintf (buffer, "%+-#" STR(MIN_FIELD_WIDTH) ".*" \
            return;\
          }\
        tmp = sign_bit ? -tmp : tmp;\
-       if (f->u.real.d == 0 && f->format == FMT_F)\
+       if (f->u.real.d == 0 && f->format == FMT_F\
+           && dtp->u.p.scale_factor == 0)\
          {\
            if (tmp < 0.5)\
              tmp = 0.0;\