diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5a55a9c..eca91d6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2007-07-05 Richard Earnshaw <rearnsha@arm.com> + + * arm.c (vfp3_const_double_index): Copy signed results of + REAL_VALUE_TO_INT into unsigned vars. + 2007-07-05 Richard Guenther <rguenther@suse.de> PR middle-end/32639 diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 2169256..b03a303 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -5768,6 +5768,7 @@ vfp3_const_double_index (rtx x) int sign, exponent; unsigned HOST_WIDE_INT mantissa, mant_hi; unsigned HOST_WIDE_INT mask; + HOST_WIDE_INT m1, m2; int point_pos = 2 * HOST_BITS_PER_WIDE_INT - 1; if (!TARGET_VFP3 || GET_CODE (x) != CONST_DOUBLE) @@ -5788,7 +5789,9 @@ vfp3_const_double_index (rtx x) WARNING: If there's ever a VFP version which uses more than 2 * H_W_I - 1 bits for the mantissa, this may fail (low bits would be lost). */ real_ldexp (&m, &r, point_pos - exponent); - REAL_VALUE_TO_INT (&mantissa, &mant_hi, m); + REAL_VALUE_TO_INT (&m1, &m2, m); + mantissa = m1; + mant_hi = m2; /* If there are bits set in the low part of the mantissa, we can't represent this value. */ |