From 9c951124f3269d8789a552bcac335768e1c79388 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Wed, 9 Apr 2003 19:30:29 +0000 Subject: [PATCH] fp-bit.c (unpack_d): Handle pair of doubles with different signs correctly. * config/fp-bit.c (unpack_d): Handle pair of doubles with different signs correctly. From-SVN: r65405 --- gcc/ChangeLog | 5 +++++ gcc/config/fp-bit.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 200d2a7..dcf7e58 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-04-09 Alexandre Oliva + + * config/fp-bit.c (unpack_d): Handle pair of doubles with + different signs correctly. + 2003-04-09 Vladimir Makarov * sched-deps.c (reg_pending_barrier_mode): New enumeration. diff --git a/gcc/config/fp-bit.c b/gcc/config/fp-bit.c index 2832f96..b8ac298 100644 --- a/gcc/config/fp-bit.c +++ b/gcc/config/fp-bit.c @@ -459,6 +459,7 @@ unpack_d (FLO_union_type * src, fp_number_type * dst) if (exp != EXPMAX && exp != 0 && low != 0) { int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1); + int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1; int shift; fractype xlow; @@ -472,7 +473,10 @@ unpack_d (FLO_union_type * src, fp_number_type * dst) xlow <<= shift; else if (shift < 0) xlow >>= -shift; - fraction += xlow; + if (sign == lowsign) + fraction += xlow; + else + fraction -= xlow; } } # else -- 2.7.4