Commit e7c2087c by Richard Stallman

(output_move_double): Extend the special case

for *--sp = sp[N] to handle 12 bytes as well as 8 bytes.

From-SVN: r5951
parent f55ef7b0
...@@ -444,12 +444,14 @@ output_move_double (operands) ...@@ -444,12 +444,14 @@ output_move_double (operands)
} }
/* If insn is effectively movd N (sp),-(sp) then we will do the /* If insn is effectively movd N (sp),-(sp) then we will do the
high word first. We should use the adjusted operand 1 (which is N+4 (sp)) high word first. We should use the adjusted operand 1
for the low word as well, to compensate for the first decrement of sp. */ (which is N+4 (sp) or N+8 (sp))
for the low word and middle word as well,
to compensate for the first decrement of sp. */
if (optype0 == PUSHOP if (optype0 == PUSHOP
&& REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM && REGNO (XEXP (XEXP (operands[0], 0), 0)) == STACK_POINTER_REGNUM
&& reg_overlap_mentioned_p (stack_pointer_rtx, operands[1])) && reg_overlap_mentioned_p (stack_pointer_rtx, operands[1]))
operands[1] = latehalf[1]; middlehalf[1] = operands[1] = latehalf[1];
/* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)), /* For (set (reg:DI N) (mem:DI ... (reg:SI N) ...)),
if the upper part of reg N does not appear in the MEM, arrange to if the upper part of reg N does not appear in the MEM, arrange to
......
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