diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 12a324cc1f3..600700a3945 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-10-12 Bill Schmidt + + PR tree-optimization/77937 + * gimple-ssa-strength-reduction.c (analyze_increments): Use + POINTER_TYPE_P on the candidate type to determine whether + candidates in this chain require pointer arithmetic. + 2016-10-12 Eric Botcazou * config/visium/visium.c (visium_gimplify_va_arg): Emit a big-endian diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c index b1a6602ef02..cfa50d34ad0 100644 --- a/gcc/gimple-ssa-strength-reduction.c +++ b/gcc/gimple-ssa-strength-reduction.c @@ -2816,8 +2816,7 @@ analyze_increments (slsr_cand_t first_dep, machine_mode mode, bool speed) else if (incr == 0 || incr == 1 || (incr == -1 - && (gimple_assign_rhs_code (first_dep->cand_stmt) - != POINTER_PLUS_EXPR))) + && !POINTER_TYPE_P (first_dep->cand_type))) incr_vec[i].cost = COST_NEUTRAL; /* FORNOW: If we need to add an initializer, give up if a cast from