https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64557
--- Comment #1 from wmi at google dot com --- The experimental patch is to call get_addr for VALUE of base before plus other constant, when creating mem_addr for dependence check and for store_info. bootstrap and regression on x86_64-linux-gnu are ok. Index: dse.c =================================================================== --- dse.c (revision 219421) +++ dse.c (working copy) @@ -1564,6 +1564,7 @@ record_store (rtx body, bb_info_t bb_inf = rtx_group_vec[group_id]; mem_addr = group->canon_base_addr; } + mem_addr = get_addr (mem_addr); if (offset) mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset); } @@ -2177,6 +2178,7 @@ check_mem_read_rtx (rtx *loc, bb_info_t = rtx_group_vec[group_id]; mem_addr = group->canon_base_addr; } + mem_addr = get_addr (mem_addr); if (offset) mem_addr = plus_constant (get_address_mode (mem), mem_addr, offset); }