diff options
author | wmi <wmi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-01-22 17:59:23 +0000 |
---|---|---|
committer | wmi <wmi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-01-22 17:59:23 +0000 |
commit | 90f3e775d6b7bec70e883579beb49b456c135a09 (patch) | |
tree | 28e99b7fbc79dfbf77094c75b1ed84b1d43183a5 /gcc/dse.c | |
parent | 913af3a96bb59ee6f1c90282148abb2663a35208 (diff) | |
download | gcc-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.c | 8 |
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); } |