reload1.c (choose_reload_regs): Don't set reload_override_in if EQUIV is clobbered in INSN and the reload is...
* reload1.c (choose_reload_regs): Don't set reload_override_in if EQUIV is clobbered in INSN and the reload is done after INSN. From-SVN: r20999
This commit is contained in:
parent
54303b5cb3
commit
3c785e47dc
@ -1,3 +1,8 @@
|
||||
Tue Jul 7 23:03:34 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* reload1.c (choose_reload_regs): Don't set reload_override_in
|
||||
if EQUIV is clobbered in INSN and the reload is done after INSN.
|
||||
|
||||
Tue Jul 7 21:23:36 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* expr.c (emit_queue): If emitting a SEQUENCE, set QUEUED_INSN
|
||||
|
@ -5826,14 +5826,30 @@ choose_reload_regs (insn, avoid_return_reg)
|
||||
break;
|
||||
}
|
||||
|
||||
/* JRV: If the equiv register we have found is
|
||||
explicitly clobbered in the current insn, mark but
|
||||
don't use, as above. */
|
||||
/* If the equiv register we have found is explicitly clobbered
|
||||
in the current insn, it depends on the reload type if we
|
||||
can use it, use it for reload_override_in, or not at all.
|
||||
In particular, we then can't use EQUIV for a
|
||||
RELOAD_FOR_OUTPUT_ADDRESS reload. */
|
||||
|
||||
if (equiv != 0 && regno_clobbered_p (regno, insn))
|
||||
{
|
||||
reload_override_in[r] = equiv;
|
||||
equiv = 0;
|
||||
switch (reload_when_needed[r])
|
||||
{
|
||||
case RELOAD_FOR_OTHER_ADDRESS:
|
||||
case RELOAD_FOR_INPADDR_ADDRESS:
|
||||
case RELOAD_FOR_INPUT_ADDRESS:
|
||||
case RELOAD_FOR_OPADDR_ADDR:
|
||||
break;
|
||||
case RELOAD_OTHER:
|
||||
case RELOAD_FOR_INPUT:
|
||||
case RELOAD_FOR_OPERAND_ADDRESS:
|
||||
reload_override_in[r] = equiv;
|
||||
/* Fall through. */
|
||||
default:
|
||||
equiv = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* If we found an equivalent reg, say no code need be generated
|
||||
|
Loading…
Reference in New Issue
Block a user