Commit c96d01ab by Richard Kenner

(push_reload): Delete abort for RELOAD_OTHER case added in last

change.

From-SVN: r10561
parent 09f6940d
...@@ -901,6 +901,11 @@ push_reload (in, out, inloc, outloc, class, ...@@ -901,6 +901,11 @@ push_reload (in, out, inloc, outloc, class,
!= HARD_REGNO_NREGS (REGNO (SUBREG_REG (in)), != HARD_REGNO_NREGS (REGNO (SUBREG_REG (in)),
GET_MODE (SUBREG_REG (in))))))) GET_MODE (SUBREG_REG (in)))))))
{ {
/* This relies on the fact that emit_reload_insns outputs the
instructions for input reloads of type RELOAD_OTHER in the same
order as the reloads. Thus if the outer reload is also of type
RELOAD_OTHER, we are guaranteed that this inner reload will be
output before the outer reload. */
push_reload (SUBREG_REG (in), NULL_RTX, &SUBREG_REG (in), NULL_PTR, push_reload (SUBREG_REG (in), NULL_RTX, &SUBREG_REG (in), NULL_PTR,
GENERAL_REGS, VOIDmode, VOIDmode, 0, 0, opnum, type); GENERAL_REGS, VOIDmode, VOIDmode, 0, 0, opnum, type);
dont_remove_subreg = 1; dont_remove_subreg = 1;
...@@ -984,16 +989,17 @@ push_reload (in, out, inloc, outloc, class, ...@@ -984,16 +989,17 @@ push_reload (in, out, inloc, outloc, class,
!= HARD_REGNO_NREGS (REGNO (SUBREG_REG (out)), != HARD_REGNO_NREGS (REGNO (SUBREG_REG (out)),
GET_MODE (SUBREG_REG (out))))))) GET_MODE (SUBREG_REG (out)))))))
{ {
if (type == RELOAD_OTHER) /* This relies on the fact that emit_reload_insns outputs the
abort (); instructions for output reloads of type RELOAD_OTHER in reverse
order of the reloads. Thus if the outer reload is also of type
RELOAD_OTHER, we are guaranteed that this inner reload will be
output after the outer reload. */
dont_remove_subreg = 1; dont_remove_subreg = 1;
push_reload (SUBREG_REG (out), SUBREG_REG (out), &SUBREG_REG (out), push_reload (SUBREG_REG (out), SUBREG_REG (out), &SUBREG_REG (out),
&SUBREG_REG (out), ALL_REGS, VOIDmode, VOIDmode, 0, 0, &SUBREG_REG (out), ALL_REGS, VOIDmode, VOIDmode, 0, 0,
opnum, RELOAD_OTHER); opnum, RELOAD_OTHER);
} }
/* If IN appears in OUT, we can't share any input-only reload for IN. */ /* If IN appears in OUT, we can't share any input-only reload for IN. */
if (in != 0 && out != 0 && GET_CODE (out) == MEM if (in != 0 && out != 0 && GET_CODE (out) == MEM
&& (GET_CODE (in) == REG || GET_CODE (in) == MEM) && (GET_CODE (in) == REG || GET_CODE (in) == MEM)
......
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