------- Comment #5 from amodra at bigpond dot net dot au  2006-02-02 06:18 
-------
        * config/rs6000/darwin-ldouble.c (__gcc_qadd): Preserve -0.0 result.

Index: gcc/config/rs6000/darwin-ldouble.c
===================================================================
--- gcc/config/rs6000/darwin-ldouble.c  (revision 110484)
+++ gcc/config/rs6000/darwin-ldouble.c  (working copy)
@@ -117,10 +117,15 @@ __gcc_qadd (double a, double aa, double 
     {
       q = a - z;
       zz = q + c + (a - (q + z)) + aa + cc;
-      xh = z + zz;
-
-      if (nonfinite (xh))
-       return xh;
+      xh = z;
+      /* Keep -0 result.  */
+      if (zz != 0.0)
+       {
+         xh += zz;
+
+         if (nonfinite (xh))
+           return xh;
+       }

       x.dval[0] = xh;
       x.dval[1] = z - xh + zz;


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25960

Reply via email to