+2000-11-23 Alexandre Oliva <aoliva@redhat.com>
+
+ * emit-rtl.c (gen_lowpart_common): Use word 0 if register mode
+ is narrower than requested mode.
+ (gen_highpart): Abort if register mode is narrower than
+ requested mode.
+
2000-11-23 Graham Stott <grahams@redhat.com>
* cse.c (cse_insn): Initialise all regcost variables.
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 && REGNO (x) < FIRST_PSEUDO_REGISTER
+ && GET_MODE_SIZE (GET_MODE (x)) > GET_MODE_SIZE (mode))
word = (HARD_REGNO_NREGS (REGNO (x), GET_MODE (x))
- HARD_REGNO_NREGS (REGNO (x), mode));
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)
+ if (GET_MODE_SIZE (GET_MODE (x)) < GET_MODE_SIZE (mode))
+ abort ();
+ else if (WORDS_BIG_ENDIAN)
word = 0;
else if (REGNO (x) < FIRST_PSEUDO_REGISTER)
word = (HARD_REGNO_NREGS (REGNO (x), GET_MODE (x))