summaryrefslogtreecommitdiff
path: root/gcc/dse.c
diff options
context:
space:
mode:
authorwmi <wmi@138bc75d-0d04-0410-961f-82ee72b054a4>2015-01-22 17:59:23 +0000
committerwmi <wmi@138bc75d-0d04-0410-961f-82ee72b054a4>2015-01-22 17:59:23 +0000
commit90f3e775d6b7bec70e883579beb49b456c135a09 (patch)
tree28e99b7fbc79dfbf77094c75b1ed84b1d43183a5 /gcc/dse.c
parent913af3a96bb59ee6f1c90282148abb2663a35208 (diff)
downloadgcc-90f3e775d6b7bec70e883579beb49b456c135a09.tar.gz
2015-01-22 Wei Mi <wmi@google.com>
PR rtl-optimization/64557 * dse.c (record_store): Call get_addr for mem_addr. (check_mem_read_rtx): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@220010 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/dse.c')
-rw-r--r--gcc/dse.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/dse.c b/gcc/dse.c
index ea6f24585c5..2bb20d74625 100644
--- a/gcc/dse.c
+++ b/gcc/dse.c
@@ -1575,6 +1575,10 @@ record_store (rtx body, bb_info_t bb_info)
= rtx_group_vec[group_id];
mem_addr = group->canon_base_addr;
}
+ /* get_addr can only handle VALUE but cannot handle expr like:
+ VALUE + OFFSET, so call get_addr to get original addr for
+ mem_addr before plus_constant. */
+ mem_addr = get_addr (mem_addr);
if (offset)
mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset);
}
@@ -2188,6 +2192,10 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info)
= rtx_group_vec[group_id];
mem_addr = group->canon_base_addr;
}
+ /* get_addr can only handle VALUE but cannot handle expr like:
+ VALUE + OFFSET, so call get_addr to get original addr for
+ mem_addr before plus_constant. */
+ mem_addr = get_addr (mem_addr);
if (offset)
mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset);
}