summaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-01-23 23:05:19 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2004-01-23 22:05:19 +0000
commita74ff877641c745eda294f04564a7ac7fc9b9e9d (patch)
treedf0d7a13f079d9a72686f4de77602ca503923fea /gcc/emit-rtl.c
parent8b07361ed42c59b4924327db352609df2b3c26d8 (diff)
downloadgcc-a74ff877641c745eda294f04564a7ac7fc9b9e9d.tar.gz
emit-rtl.c (change_address_1): Do not re-generate the RTX if nothing change.
* emit-rtl.c (change_address_1): Do not re-generate the RTX if nothing change. From-SVN: r76457
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r--gcc/emit-rtl.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index cdb0c2a3c31..f576e76ca75 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -1840,6 +1840,9 @@ change_address_1 (rtx memref, enum machine_mode mode, rtx addr, int validate)
mode = GET_MODE (memref);
if (addr == 0)
addr = XEXP (memref, 0);
+ if (mode == GET_MODE (memref) && addr == XEXP (memref, 0)
+ && (!validate || memory_address_p (mode, addr)))
+ return memref;
if (validate)
{