diff options
Diffstat (limited to 'gcc-4.9/gcc/dse.c')
-rw-r--r-- | gcc-4.9/gcc/dse.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/dse.c b/gcc-4.9/gcc/dse.c index 09dc5df..878fedc 100644 --- a/gcc-4.9/gcc/dse.c +++ b/gcc-4.9/gcc/dse.c @@ -1549,6 +1549,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); } @@ -2166,6 +2170,10 @@ check_mem_read_rtx (rtx *loc, void *data) = 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); } |