diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-01-19 13:34:45 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-01-19 13:34:45 +0100 |
commit | 569efc34ebc4f0a01d435dc11c3146b5442132cd (patch) | |
tree | 75a7d1ce1a175bc96655f4cf67f8ea84e0f07f16 /gcc/dse.c | |
parent | e49d321f033c35d907d9d3eb339efaa6a8ba1e52 (diff) | |
download | gcc-569efc34ebc4f0a01d435dc11c3146b5442132cd.zip gcc-569efc34ebc4f0a01d435dc11c3146b5442132cd.tar.gz gcc-569efc34ebc4f0a01d435dc11c3146b5442132cd.tar.bz2 |
re PR rtl-optimization/68955 (wrong code at -O3 on x86-64-linux-gnu in 32-bit mode)
PR rtl-optimization/68955
PR rtl-optimization/64557
* dse.c (record_store, check_mem_read_rtx): Don't call get_addr
here. Fix up formatting.
* alias.c (get_addr): Handle VALUE +/- CONST_SCALAR_INT_P.
* gcc.dg/torture/pr68955.c: New test.
From-SVN: r232554
Diffstat (limited to 'gcc/dse.c')
-rw-r--r-- | gcc/dse.c | 14 |
1 files changed, 2 insertions, 12 deletions
@@ -1515,14 +1515,9 @@ record_store (rtx body, bb_info_t bb_info) mem_addr = base->val_rtx; else { - group_info *group - = rtx_group_vec[group_id]; + group_info *group = 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); } @@ -2128,14 +2123,9 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info) mem_addr = base->val_rtx; else { - group_info *group - = rtx_group_vec[group_id]; + group_info *group = 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); } |