Commit 2cca6e3f by Richard Kenner

(break_out_memory_refs): Don't call mark_reg_pointer here.

(memory_address): Call it here if X changed and is now a REG or REG +
CONST_INT.

From-SVN: r6729
parent 2fe204da
...@@ -274,19 +274,17 @@ break_out_memory_refs (x) ...@@ -274,19 +274,17 @@ break_out_memory_refs (x)
if (GET_CODE (x) == MEM if (GET_CODE (x) == MEM
|| (CONSTANT_P (x) && CONSTANT_ADDRESS_P (x) || (CONSTANT_P (x) && CONSTANT_ADDRESS_P (x)
&& GET_MODE (x) != VOIDmode)) && GET_MODE (x) != VOIDmode))
{ x = force_reg (GET_MODE (x), x);
register rtx temp = force_reg (GET_MODE (x), x);
mark_reg_pointer (temp);
x = temp;
}
else if (GET_CODE (x) == PLUS || GET_CODE (x) == MINUS else if (GET_CODE (x) == PLUS || GET_CODE (x) == MINUS
|| GET_CODE (x) == MULT) || GET_CODE (x) == MULT)
{ {
register rtx op0 = break_out_memory_refs (XEXP (x, 0)); register rtx op0 = break_out_memory_refs (XEXP (x, 0));
register rtx op1 = break_out_memory_refs (XEXP (x, 1)); register rtx op1 = break_out_memory_refs (XEXP (x, 1));
if (op0 != XEXP (x, 0) || op1 != XEXP (x, 1)) if (op0 != XEXP (x, 0) || op1 != XEXP (x, 1))
x = gen_rtx (GET_CODE (x), Pmode, op0, op1); x = gen_rtx (GET_CODE (x), Pmode, op0, op1);
} }
return x; return x;
} }
...@@ -435,6 +433,17 @@ memory_address (mode, x) ...@@ -435,6 +433,17 @@ memory_address (mode, x)
done: done:
/* If we didn't change the address, we are done. Otherwise, mark
a reg as a pointer if we have REG or REG + CONST_INT. */
if (oldx == x)
return x;
else if (GET_CODE (x) == REG)
mark_reg_pointer (x);
else if (GET_CODE (x) == PLUS
&& GET_CODE (XEXP (x, 0)) == REG
&& GET_CODE (XEXP (x, 1)) == CONST_INT)
mark_reg_pointer (XEXP (x, 0));
/* OLDX may have been the address on a temporary. Update the address /* OLDX may have been the address on a temporary. Update the address
to indicate that X is now used. */ to indicate that X is now used. */
update_temp_slot_address (oldx, x); update_temp_slot_address (oldx, x);
......
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