diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e2e4a59410d..ef9d576fa19 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2017-11-21 Martin Liska + + Backport from mainline + 2017-11-21 Martin Liska + + PR rtl-optimization/82044 + PR tree-optimization/82042 + * dse.c (check_mem_read_rtx): Check for overflow. + 2017-11-21 Martin Liska Backport from mainline diff --git a/gcc/dse.c b/gcc/dse.c index f87dd50024e..6cd1b83d802 100644 --- a/gcc/dse.c +++ b/gcc/dse.c @@ -1978,6 +1978,12 @@ check_mem_read_rtx (rtx *loc, bb_info_t bb_info) else width = GET_MODE_SIZE (GET_MODE (mem)); + if (offset > HOST_WIDE_INT_MAX - width) + { + clear_rhs_from_active_local_stores (); + return; + } + read_info = read_info_type_pool.allocate (); read_info->group_id = group_id; read_info->mem = mem;