Commit 100338df by Jeff Law

reload1.c (choose_reload_regs): Properly mark spill registers as in use for inherited reloads.

        * reload1.c (choose_reload_regs): Properly mark spill registers
        as in use for inherited reloads.

From-SVN: r12377
parent 49c8f4a4
...@@ -5376,20 +5376,24 @@ choose_reload_regs (insn, avoid_return_reg) ...@@ -5376,20 +5376,24 @@ choose_reload_regs (insn, avoid_return_reg)
to load it, and use it as our reload reg. */ to load it, and use it as our reload reg. */
if (equiv != 0 && regno != HARD_FRAME_POINTER_REGNUM) if (equiv != 0 && regno != HARD_FRAME_POINTER_REGNUM)
{ {
int nr = HARD_REGNO_NREGS (regno, reload_mode[r]);
int k;
reload_reg_rtx[r] = equiv; reload_reg_rtx[r] = equiv;
reload_inherited[r] = 1; reload_inherited[r] = 1;
/* If it is a spill reg,
mark the spill reg as in use for this insn. */ /* If any of the hard registers in EQUIV are spill
i = spill_reg_order[regno]; registers, mark them as in use for this insn. */
if (i >= 0) for (k = 0; k < nr; k++)
{ {
int nr = HARD_REGNO_NREGS (regno, reload_mode[r]); i = spill_reg_order[regno + k];
int k; if (i >= 0)
mark_reload_reg_in_use (regno, reload_opnum[r], {
reload_when_needed[r], mark_reload_reg_in_use (regno, reload_opnum[r],
reload_mode[r]); reload_when_needed[r],
for (k = 0; k < nr; k++) reload_mode[r]);
SET_HARD_REG_BIT (reload_reg_used_for_inherit, regno + k); SET_HARD_REG_BIT (reload_reg_used_for_inherit,
regno + k);
}
} }
} }
} }
......
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