emit-rtl.c (change_address, [...]): Return early when there is nothing to change.
* emit-rtl.c (change_address, adjust_address_1, offset_address, widen_memory_access): Return early when there is nothing to change. From-SVN: r76512
This commit is contained in:
parent
8865bf80ee
commit
fdb1c7b358
|
@ -1,3 +1,8 @@
|
|||
2004-01-24 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* emit-rtl.c (change_address, adjust_address_1, offset_address,
|
||||
widen_memory_access): Return early when there is nothing to change.
|
||||
|
||||
2004-01-24 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* simplify-rtx.c (simplify_relational_operation): Don't
|
||||
|
|
|
@ -1872,6 +1872,10 @@ change_address (rtx memref, enum machine_mode mode, rtx addr)
|
|||
rtx new = change_address_1 (memref, mode, addr, 1);
|
||||
enum machine_mode mmode = GET_MODE (new);
|
||||
|
||||
/* If there are no changes, just return the original memory reference. */
|
||||
if (new == memref)
|
||||
return new;
|
||||
|
||||
MEM_ATTRS (new)
|
||||
= get_mem_attrs (MEM_ALIAS_SET (memref), 0, 0,
|
||||
mmode == BLKmode ? 0 : GEN_INT (GET_MODE_SIZE (mmode)),
|
||||
|
@ -1898,6 +1902,11 @@ adjust_address_1 (rtx memref, enum machine_mode mode, HOST_WIDE_INT offset,
|
|||
rtx size = 0;
|
||||
unsigned int memalign = MEM_ALIGN (memref);
|
||||
|
||||
/* If there are no changes, just return the original memory reference. */
|
||||
if (mode == GET_MODE (memref) && !offset
|
||||
&& (!validate || memory_address_p (mode, addr)))
|
||||
return memref;
|
||||
|
||||
/* ??? Prefer to create garbage instead of creating shared rtl.
|
||||
This may happen even if offset is nonzero -- consider
|
||||
(plus (plus reg reg) const_int) -- so do this always. */
|
||||
|
@ -1988,6 +1997,10 @@ offset_address (rtx memref, rtx offset, unsigned HOST_WIDE_INT pow2)
|
|||
update_temp_slot_address (XEXP (memref, 0), new);
|
||||
new = change_address_1 (memref, VOIDmode, new, 1);
|
||||
|
||||
/* If there are no changes, just return the original memory reference. */
|
||||
if (new == memref)
|
||||
return new;
|
||||
|
||||
/* Update the alignment to reflect the offset. Reset the offset, which
|
||||
we don't know. */
|
||||
MEM_ATTRS (new)
|
||||
|
@ -2032,6 +2045,10 @@ widen_memory_access (rtx memref, enum machine_mode mode, HOST_WIDE_INT offset)
|
|||
rtx memoffset = MEM_OFFSET (new);
|
||||
unsigned int size = GET_MODE_SIZE (mode);
|
||||
|
||||
/* If there are no changes, just return the original memory reference. */
|
||||
if (new == memref)
|
||||
return new;
|
||||
|
||||
/* If we don't know what offset we were at within the expression, then
|
||||
we can't know if we've overstepped the bounds. */
|
||||
if (! memoffset)
|
||||
|
|
Loading…
Reference in New Issue