aboutsummaryrefslogtreecommitdiff
path: root/gcc
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
parent8b07361ed42c59b4924327db352609df2b3c26d8 (diff)
downloadgcc-a74ff877641c745eda294f04564a7ac7fc9b9e9d.zip
gcc-a74ff877641c745eda294f04564a7ac7fc9b9e9d.tar.gz
gcc-a74ff877641c745eda294f04564a7ac7fc9b9e9d.tar.bz2
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')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/emit-rtl.c3
2 files changed, 6 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ed74058..2a4f30a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
2004-01-23 Jan Hubicka <jh@suse.cz>
+ * emit-rtl.c (change_address_1): Do not re-generate the RTX if nothing
+ change.
+
* alloc-pool.c (align_four): Kill.
(create_alloc_pool): Align size to eight.
(free_alloc_pool, free_pool): Invalidate deallocated data.
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index cdb0c2a..f576e76 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)
{