From 2d4035dcd7b0be8a9edefb9af8121ae0eaabaa7c Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Thu, 13 Oct 2016 15:34:22 +0000 Subject: [PATCH] re PR tree-optimization/77937 (ICE: in replace_one_candidate, at gimple-ssa-strength-reduction.c:3370) 2016-10-13 Bill Schmidt PR tree-optimization/77937 * gimple-ssa-strength-reduction.c (analyze_increments): Set cost to infinite when we have a pointer with an increment of -1. From-SVN: r241125 --- gcc/ChangeLog | 6 ++++++ gcc/gimple-ssa-strength-reduction.c | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dfd16fe0763..7362986db73 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-10-13 Bill Schmidt + + PR tree-optimization/77937 + * gimple-ssa-strength-reduction.c (analyze_increments): Set cost + to infinite when we have a pointer with an increment of -1. + 2016-10-13 Thomas Preud'homme * coretypes.h: Move MEMMODEL_* macros and enum memmodel definition diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c index cfa50d34ad0..72862f85144 100644 --- a/gcc/gimple-ssa-strength-reduction.c +++ b/gcc/gimple-ssa-strength-reduction.c @@ -2818,6 +2818,11 @@ analyze_increments (slsr_cand_t first_dep, machine_mode mode, bool speed) || (incr == -1 && !POINTER_TYPE_P (first_dep->cand_type))) incr_vec[i].cost = COST_NEUTRAL; + + /* FIXME: We don't handle pointers with a -1 increment yet. + They are usually unprofitable anyway. */ + 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. -- 2.30.2