Fix for DF split

From-SVN: r49011
This commit is contained in:
Tom Rix 2002-01-19 15:40:35 +00:00 committed by Tom Rix
parent 89769d19cc
commit 5b0293155d
2 changed files with 12 additions and 0 deletions

View File

@ -1,3 +1,7 @@
2002-01-19 Tom Rix <trix@redhat.com>
* config/rs6000/rs6000.md: Fix DF split for 64 bit hosts.
2002-01-18 Aldy Hernandez <aldyh@redhat.com>
* doc/tm.texi (STARTING_FRAME_PHASE): Document.

View File

@ -7927,13 +7927,21 @@
int endian = (WORDS_BIG_ENDIAN == 0);
long l[2];
REAL_VALUE_TYPE rv;
HOST_WIDE_INT val;
REAL_VALUE_FROM_CONST_DOUBLE (rv, operands[1]);
REAL_VALUE_TO_TARGET_DOUBLE (rv, l);
operands[2] = gen_lowpart (DImode, operands[0]);
/* HIGHPART is lower memory address when WORDS_BIG_ENDIAN. */
#if HOST_BITS_PER_WIDE_INT >= 64
val = ((HOST_WIDE_INT)(unsigned long)l[endian] << 32 |
((HOST_WIDE_INT)(unsigned long)l[1 - endian]));
operands[3] = immed_double_const (val, -(val < 0), DImode);
#else
operands[3] = immed_double_const (l[1 - endian], l[endian], DImode);
#endif
}")
;; Don't have reload use general registers to load a constant. First,