aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2007-07-05 21:33:30 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2007-07-05 21:33:30 +0000
commit8e39e9afe08cb675620db0024d5eae9dc9aba777 (patch)
treea643ac1d8da8680f26b4d11494dc16e02f3910fa
parente11e491dbfa0d4b134e653647a0bf1b645e17327 (diff)
downloadgcc-8e39e9afe08cb675620db0024d5eae9dc9aba777.zip
gcc-8e39e9afe08cb675620db0024d5eae9dc9aba777.tar.gz
gcc-8e39e9afe08cb675620db0024d5eae9dc9aba777.tar.bz2
arm.c (vfp3_const_double_index): Copy signed results of REAL_VALUE_TO_INT into unsigned vars.
* arm.c (vfp3_const_double_index): Copy signed results of REAL_VALUE_TO_INT into unsigned vars. From-SVN: r126390
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.c5
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. */