Commit 3a58400f by Richard Stallman

(output_move_double): Fix up the test for overlap

of source address with operands[0].

From-SVN: r5987
parent 5ac6158d
...@@ -1077,11 +1077,14 @@ output_move_double (operands) ...@@ -1077,11 +1077,14 @@ output_move_double (operands)
if (optype0 == REGOP if (optype0 == REGOP
&& (optype1 == OFFSOP || optype1 == MEMOP)) && (optype1 == OFFSOP || optype1 == MEMOP))
{ {
if (reg_overlap_mentioned_p (operands[0], XEXP (operands[1], 0)) rtx testlow = gen_rtx (REG, SImode, REGNO (operands[0]));
if (reg_overlap_mentioned_p (testlow, XEXP (operands[1], 0))
&& reg_overlap_mentioned_p (latehalf[0], XEXP (operands[1], 0))) && reg_overlap_mentioned_p (latehalf[0], XEXP (operands[1], 0)))
{ {
/* If both halves of dest are used in the src memory address, /* If both halves of dest are used in the src memory address,
compute the address into latehalf of dest. */ compute the address into latehalf of dest.
Note that this can't happen if the dest is two data regs. */
compadr: compadr:
xops[0] = latehalf[0]; xops[0] = latehalf[0];
xops[1] = XEXP (operands[1], 0); xops[1] = XEXP (operands[1], 0);
...@@ -1102,8 +1105,13 @@ compadr: ...@@ -1102,8 +1105,13 @@ compadr:
&& reg_overlap_mentioned_p (middlehalf[0], && reg_overlap_mentioned_p (middlehalf[0],
XEXP (operands[1], 0))) XEXP (operands[1], 0)))
{ {
/* Check for two regs used by both source and dest. */ /* Check for two regs used by both source and dest.
if (reg_overlap_mentioned_p (operands[0], XEXP (operands[1], 0)) Note that this can't happen if the dest is all data regs.
It can happen if the dest is d6, d7, a0.
But in that case, latehalf is an addr reg, so
the code at compadr does ok. */
if (reg_overlap_mentioned_p (testlow, XEXP (operands[1], 0))
|| reg_overlap_mentioned_p (latehalf[0], XEXP (operands[1], 0))) || reg_overlap_mentioned_p (latehalf[0], XEXP (operands[1], 0)))
goto compadr; goto compadr;
......
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