diff options
author | Wei Mi <wmi@google.com> | 2015-01-22 17:59:23 +0000 |
---|---|---|
committer | Wei Mi <wmi@gcc.gnu.org> | 2015-01-22 17:59:23 +0000 |
commit | ff1803c128986d7095c723a84e7c18ce33b2111e (patch) | |
tree | 28e99b7fbc79dfbf77094c75b1ed84b1d43183a5 /gcc | |
parent | 6e436286338333f42a87c418764476baf456740c (diff) | |
download | gcc-ff1803c128986d7095c723a84e7c18ce33b2111e.zip gcc-ff1803c128986d7095c723a84e7c18ce33b2111e.tar.gz gcc-ff1803c128986d7095c723a84e7c18ce33b2111e.tar.bz2 |
re PR rtl-optimization/64557 (get_addr in true_dependence_1 cannot handle VALUE inside an expr)
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.
From-SVN: r220010
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/dse.c | 8 |
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 90b3987..3b89501 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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. + 2015-01-22 Eric Botcazou <ebotcazou@adacore.com> * fold-const.c (const_binop): Add early return for non-tcc_binary. @@ -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); } |