Commit 09ece7b5 by Jeff Law

pa.c (emit_move_sequence): Don't lose for a secondary reload to the SAR register if...

        * pa/pa.c (emit_move_sequence): Don't lose for a secondary reload
        to the SAR register if the input is a MEM with an offset that won't
        fit in 14bits.

From-SVN: r13753
parent 52320a47
...@@ -1170,7 +1170,21 @@ emit_move_sequence (operands, mode, scratch_reg) ...@@ -1170,7 +1170,21 @@ emit_move_sequence (operands, mode, scratch_reg)
&& FP_REG_CLASS_P (REGNO_REG_CLASS (REGNO (operand1))))) && FP_REG_CLASS_P (REGNO_REG_CLASS (REGNO (operand1)))))
&& scratch_reg) && scratch_reg)
{ {
emit_move_insn (scratch_reg, operand1); /* D might not fit in 14 bits either; for such cases load D into
scratch reg. */
if (GET_CODE (operand1) == MEM
&& !memory_address_p (SImode, XEXP (operand1, 0)))
{
emit_move_insn (scratch_reg, XEXP (XEXP (operand1, 0), 1));
emit_move_insn (scratch_reg, gen_rtx (GET_CODE (XEXP (operand1, 0)),
SImode,
XEXP (XEXP (operand1, 0), 0),
scratch_reg));
emit_move_insn (scratch_reg, gen_rtx (MEM, GET_MODE (operand1),
scratch_reg));
}
else
emit_move_insn (scratch_reg, operand1);
emit_move_insn (operand0, scratch_reg); emit_move_insn (operand0, scratch_reg);
return 1; return 1;
} }
......
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