Commit 69295d6d by Alexandre Oliva Committed by Alexandre Oliva

emit-rtl.c (gen_lowpart_common): Use word 0 if register mode is narrower than requested mode.

* 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.

From-SVN: r37696
parent d0c3e4f4
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> 2000-11-23 Graham Stott <grahams@redhat.com>
* cse.c (cse_insn): Initialise all regcost variables. * cse.c (cse_insn): Initialise all regcost variables.
......
...@@ -709,7 +709,8 @@ gen_lowpart_common (mode, x) ...@@ -709,7 +709,8 @@ gen_lowpart_common (mode, x)
regs are sized by the underlying register size. Better would be regs are sized by the underlying register size. Better would be
to always interpret the subreg offset parameter as bytes or bits. */ 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)) word = (HARD_REGNO_NREGS (REGNO (x), GET_MODE (x))
- HARD_REGNO_NREGS (REGNO (x), mode)); - HARD_REGNO_NREGS (REGNO (x), mode));
...@@ -1141,7 +1142,9 @@ gen_highpart (mode, x) ...@@ -1141,7 +1142,9 @@ gen_highpart (mode, x)
regs are sized by the underlying register size. Better would be regs are sized by the underlying register size. Better would be
to always interpret the subreg offset parameter as bytes or bits. */ 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; word = 0;
else if (REGNO (x) < FIRST_PSEUDO_REGISTER) else if (REGNO (x) < FIRST_PSEUDO_REGISTER)
word = (HARD_REGNO_NREGS (REGNO (x), GET_MODE (x)) word = (HARD_REGNO_NREGS (REGNO (x), GET_MODE (x))
......
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