------- 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