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
This commit is contained in:
parent
e858910352
commit
21f14ff955
@ -1,3 +1,8 @@
|
|||||||
|
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>
|
2007-01-25 Geoffrey Keating <geoffk@apple.com>
|
||||||
|
|
||||||
PR 25127
|
PR 25127
|
||||||
|
@ -5653,7 +5653,16 @@ choose_reload_regs (struct insn_chain *chain)
|
|||||||
regno = subreg_regno (rld[r].in);
|
regno = subreg_regno (rld[r].in);
|
||||||
#endif
|
#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;
|
enum reg_class class = rld[r].class, last_class;
|
||||||
rtx last_reg = reg_last_reload_reg[regno];
|
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))
|
if ((GET_MODE_SIZE (GET_MODE (last_reg))
|
||||||
>= GET_MODE_SIZE (need_mode))
|
>= 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
|
&& reg_reloaded_contents[i] == regno
|
||||||
&& TEST_HARD_REG_BIT (reg_reloaded_valid, i)
|
&& TEST_HARD_REG_BIT (reg_reloaded_valid, i)
|
||||||
&& HARD_REGNO_MODE_OK (i, rld[r].mode)
|
&& HARD_REGNO_MODE_OK (i, rld[r].mode)
|
||||||
|
Loading…
Reference in New Issue
Block a user