diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-03-08 21:12:01 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-03-08 21:12:01 +0000 |
commit | 46c86782a9b2dd086a6f0d98b2bec61ee2e6df49 (patch) | |
tree | ca48568c1ce7117d93329edfe83078a8e6e99503 /gcc/explow.c | |
parent | bb0c80fac97173aff1e03c18ef9bf2113f55e663 (diff) | |
download | gcc-46c86782a9b2dd086a6f0d98b2bec61ee2e6df49.tar.gz |
(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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@6729 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/explow.c')
-rw-r--r-- | gcc/explow.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gcc/explow.c b/gcc/explow.c index 96c7c1269c7..914abc8a7be 100644 --- a/gcc/explow.c +++ b/gcc/explow.c @@ -274,19 +274,17 @@ break_out_memory_refs (x) if (GET_CODE (x) == MEM || (CONSTANT_P (x) && CONSTANT_ADDRESS_P (x) && GET_MODE (x) != VOIDmode)) - { - register rtx temp = force_reg (GET_MODE (x), x); - mark_reg_pointer (temp); - x = temp; - } + x = force_reg (GET_MODE (x), x); else if (GET_CODE (x) == PLUS || GET_CODE (x) == MINUS || GET_CODE (x) == MULT) { register rtx op0 = break_out_memory_refs (XEXP (x, 0)); register rtx op1 = break_out_memory_refs (XEXP (x, 1)); + if (op0 != XEXP (x, 0) || op1 != XEXP (x, 1)) x = gen_rtx (GET_CODE (x), Pmode, op0, op1); } + return x; } @@ -435,6 +433,17 @@ memory_address (mode, x) 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 to indicate that X is now used. */ update_temp_slot_address (oldx, x); |