diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-05-16 17:52:21 -0400 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-05-16 17:52:21 -0400 |
commit | bc29e2ad034ea733563d45b26ad3f15e3ae74022 (patch) | |
tree | f09d783a94574f78af06309232d881de8bb4d9aa | |
parent | 60e611651584555d097ad3b2511ddea6d1fc6c20 (diff) | |
download | gcc-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.c | 12 |
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) |