Commit 21f14ff9 by DJ Delorie Committed by DJ Delorie

reload1.c (choose_reload_regs): Check for invalid subregs before computing their…

reload1.c (choose_reload_regs): Check for invalid subregs before computing their locations, not after.

* reload1.c (choose_reload_regs): Check for invalid subregs before
computing their locations, not after.

From-SVN: r121198
parent e8589103
2007-01-25 DJ Delorie <dj@redhat.com>
* reload1.c (choose_reload_regs): Check for invalid subregs before
computing their locations, not after.
2007-01-25 Geoffrey Keating <geoffk@apple.com>
PR 25127
......
......@@ -5653,7 +5653,16 @@ choose_reload_regs (struct insn_chain *chain)
regno = subreg_regno (rld[r].in);
#endif
if (regno >= 0 && reg_last_reload_reg[regno] != 0)
if (regno >= 0
&& reg_last_reload_reg[regno] != 0
#ifdef CANNOT_CHANGE_MODE_CLASS
/* Verify that the register it's in can be used in
mode MODE. */
&& !REG_CANNOT_CHANGE_MODE_P (REGNO (reg_last_reload_reg[regno]),
GET_MODE (reg_last_reload_reg[regno]),
mode)
#endif
)
{
enum reg_class class = rld[r].class, last_class;
rtx last_reg = reg_last_reload_reg[regno];
......@@ -5673,13 +5682,6 @@ choose_reload_regs (struct insn_chain *chain)
if ((GET_MODE_SIZE (GET_MODE (last_reg))
>= GET_MODE_SIZE (need_mode))
#ifdef CANNOT_CHANGE_MODE_CLASS
/* Verify that the register in "i" can be obtained
from LAST_REG. */
&& !REG_CANNOT_CHANGE_MODE_P (REGNO (last_reg),
GET_MODE (last_reg),
mode)
#endif
&& reg_reloaded_contents[i] == regno
&& TEST_HARD_REG_BIT (reg_reloaded_valid, i)
&& HARD_REGNO_MODE_OK (i, rld[r].mode)
......
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