aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/dse.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/dse.c')
-rw-r--r--gcc-4.9/gcc/dse.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/dse.c b/gcc-4.9/gcc/dse.c
index 09dc5df6e..878fedcec 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);
}