aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-02-28 08:38:44 +0000
committerJakub Jelinek <jakub@redhat.com>2005-02-28 08:38:44 +0000
commitcc111deddac466074f75b922e1578d787273bda1 (patch)
tree9fdab530cccfaa4f01afb79b89b2b1c46ab995e5
parent550b1614a027bcef0485a9840012fe86f2df0389 (diff)
PR target/18371
2004-12-19 Steven Bosscher <stevenb@suse.de> * config/i386/i386.c (ix86_split_to_parts): Use an array with four elements for decoding a CONST_DOUBLE on 64 bits targets. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-3_4-rhl-branch@95663 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/config/i386/i386.c4
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9d9146282e3..6a4557bbfa6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,12 @@
2005-02-22 Jakub Jelinek <jakub@redhat.com>
+ PR target/18371
+ 2004-12-19 Steven Bosscher <stevenb@suse.de>
+ * config/i386/i386.c (ix86_split_to_parts): Use an array with
+ four elements for decoding a CONST_DOUBLE on 64 bits targets.
+
+2005-02-22 Jakub Jelinek <jakub@redhat.com>
+
Revert:
2004-02-23 Alexandre Oliva <aoliva@redhat.com>
Fixed PR/14236
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index eec9bf5392d..52e2bd4c364 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -10648,10 +10648,11 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode)
else if (GET_CODE (operand) == CONST_DOUBLE)
{
REAL_VALUE_TYPE r;
- long l[3];
+ long l[4];
REAL_VALUE_FROM_CONST_DOUBLE (r, operand);
real_to_target (l, &r, mode);
+
/* Do not use shift by 32 to avoid warning on 32bit systems. */
if (HOST_BITS_PER_WIDE_INT >= 64)
parts[0]
@@ -10661,6 +10662,7 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode)
DImode);
else
parts[0] = immed_double_const (l[0], l[1], DImode);
+
if (upper_mode == SImode)
parts[1] = gen_int_mode (l[2], SImode);
else if (HOST_BITS_PER_WIDE_INT >= 64)