From 6e3d8cb41d14ab808b715d2660678ba4be6f4b49 Mon Sep 17 00:00:00 2001 From: Bill Schmidt Date: Wed, 19 Oct 2016 13:35:14 +0000 Subject: [PATCH] re PR tree-optimization/77916 (ICE in verify_gimple_in_cfg: invalid (pointer) operands to plus/minus) 2016-10-19 Bill Schmidt PR tree-optimization/77916 PR tree-optimization/77937 * gimple-ssa-strength-reduction.c (analyze_increments): Remove stopgap fix. (insert_initializers): Requirement of initializer for -1 should be based on pointer-typedness of the candidate basis. From-SVN: r241342 --- gcc/ChangeLog | 9 +++++++++ gcc/gimple-ssa-strength-reduction.c | 6 +----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a212b55af20..382043aaf00 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2016-10-19 Bill Schmidt + + PR tree-optimization/77916 + PR tree-optimization/77937 + * gimple-ssa-strength-reduction.c (analyze_increments): Remove + stopgap fix. + (insert_initializers): Requirement of initializer for -1 should be + based on pointer-typedness of the candidate basis. + 2016-10-19 Bin Cheng PR tree-optimization/78005 diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c index 45698d25cc1..5dad1193c27 100644 --- a/gcc/gimple-ssa-strength-reduction.c +++ b/gcc/gimple-ssa-strength-reduction.c @@ -2825,10 +2825,6 @@ 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 @@ -3115,7 +3111,7 @@ insert_initializers (slsr_cand_t c) if (!profitable_increment_p (i) || incr == 1 || (incr == -1 - && gimple_assign_rhs_code (c->cand_stmt) != POINTER_PLUS_EXPR) + && (!POINTER_TYPE_P (lookup_cand (c->basis)->cand_type))) || incr == 0) continue; -- 2.30.2