From c5026021514a0a92f1f03a26ebeb10fefc5b33f9 Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Tue, 18 Oct 2016 13:35:19 +0000 Subject: [PATCH] re PR tree-optimization/77916 (ICE in verify_gimple_in_cfg: invalid (pointer) operands to plus/minus) 2016-10-18 Bill Schmidt PR tree-optimization/77916 * gimple-ssa-strength-reduction.c (analyze_increments): Reinstate stopgap fix, as pointers with -1 increment are still broken. From-SVN: r241305 --- gcc/ChangeLog | 6 ++++++ gcc/gimple-ssa-strength-reduction.c | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bd4435a4b37..2ce7f479a09 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-10-18 Bill Schmidt + + PR tree-optimization/77916 + * gimple-ssa-strength-reduction.c (analyze_increments): Reinstate + stopgap fix, as pointers with -1 increment are still broken. + 2016-10-18 David Edelsohn * config/rs6000/rs6000.c (rs6000_output_symbol_ref): Move storage diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c index c6bc5a26ea6..45698d25cc1 100644 --- a/gcc/gimple-ssa-strength-reduction.c +++ b/gcc/gimple-ssa-strength-reduction.c @@ -2825,6 +2825,10 @@ analyze_increments (slsr_cand_t first_dep, machine_mode mode, bool speed) && !POINTER_TYPE_P (first_dep->cand_type))) incr_vec[i].cost = COST_NEUTRAL; + /* FIXME: Still having trouble with pointers with a -1 increment. */ + else if (incr == -1 && POINTER_TYPE_P (first_dep->cand_type)) + incr_vec[i].cost = COST_INFINITE; + /* FORNOW: If we need to add an initializer, give up if a cast from the candidate's type to its stride's type can lose precision. This could eventually be handled better by expressly retaining the -- 2.30.2