aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-05-16 17:52:21 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-05-16 17:52:21 -0400
commitbc29e2ad034ea733563d45b26ad3f15e3ae74022 (patch)
treef09d783a94574f78af06309232d881de8bb4d9aa
parent60e611651584555d097ad3b2511ddea6d1fc6c20 (diff)
downloadgcc-bc29e2ad034ea733563d45b26ad3f15e3ae74022.zip
gcc-bc29e2ad034ea733563d45b26ad3f15e3ae74022.tar.gz
gcc-bc29e2ad034ea733563d45b26ad3f15e3ae74022.tar.bz2
(split_double): Fix arg of REAL_VALUE_TO_TARGET_DOUBLE.
From-SVN: r7314
-rw-r--r--gcc/final.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/final.c b/gcc/final.c
index 06d0372..8611656 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -2859,11 +2859,17 @@ split_double (value, first, second)
else
{
#ifdef REAL_ARITHMETIC
- REAL_VALUE_TYPE r; HOST_WIDE_INT l[2];
+ REAL_VALUE_TYPE r; long l[2];
REAL_VALUE_FROM_CONST_DOUBLE (r, value);
+
+ /* Note, this converts the REAL_VALUE_TYPE to the target's
+ format, splits up the floating point double and outputs
+ exactly 32 bits of it into each of l[0] and l[1] --
+ not necessarily BITS_PER_WORD bits. */
REAL_VALUE_TO_TARGET_DOUBLE (r, l);
- *first = GEN_INT (l[0]);
- *second = GEN_INT (l[1]);
+
+ *first = GEN_INT ((HOST_WIDE_INT) l[0]);
+ *second = GEN_INT ((HOST_WIDE_INT) l[1]);
#else
if ((HOST_FLOAT_FORMAT != TARGET_FLOAT_FORMAT
|| HOST_BITS_PER_WIDE_INT != BITS_PER_WORD)