Commit 6cca74ab by Greg McGary Committed by Richard Henderson

* emit-rtl.c (gen_highpart): initialize `word' properly for pseudo.

From-SVN: r19271
parent 4daa9c14
Fri Apr 17 16:35:35 1998 Greg McGary <gkm@gnu.org>
* emit-rtl.c (gen_highpart): initialize `word' properly for pseudo.
Fri Apr 17 14:30:37 1998 John Carr <jfc@mit.edu>
* emit-rtl.c (operand_subword_force): If a register can not be
......
......@@ -1011,18 +1011,24 @@ gen_highpart (mode, x)
}
else if (GET_CODE (x) == REG)
{
int word = 0;
int word;
/* Let the backend decide how many registers to skip. This is needed
in particular for sparc64 where fp regs are smaller than a word. */
/* ??? Note that subregs are now ambiguous, in that those against
pseudos are sized by the Word Size, while those against hard
pseudos are sized by the word size, while those against hard
regs are sized by the underlying register size. Better would be
to always interpret the subreg offset parameter as bytes or bits. */
if (! WORDS_BIG_ENDIAN && REGNO (x) < FIRST_PSEUDO_REGISTER)
if (WORDS_BIG_ENDIAN)
word = 0;
else if (REGNO (x) < FIRST_PSEUDO_REGISTER)
word = (HARD_REGNO_NREGS (REGNO (x), GET_MODE (x))
- HARD_REGNO_NREGS (REGNO (x), mode));
else
word = ((GET_MODE_SIZE (GET_MODE (x))
- MAX (GET_MODE_SIZE (mode), UNITS_PER_WORD))
/ UNITS_PER_WORD);
if (REGNO (x) < FIRST_PSEUDO_REGISTER
/* integrate.c can't handle parts of a return value register. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment