re PR tree-optimization/77916 (ICE in verify_gimple_in_cfg: invalid (pointer) operand...
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Wed, 19 Oct 2016 13:35:14 +0000 (13:35 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Wed, 19 Oct 2016 13:35:14 +0000 (13:35 +0000)
2016-10-19  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

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
gcc/gimple-ssa-strength-reduction.c

index a212b55af203cde1448d4f60c384b51571dccedd..382043aaf007fcdcf676320094f995c5de503fa1 100644 (file)
@@ -1,3 +1,12 @@
+2016-10-19  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       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  <bin.cheng@arm.com>
 
        PR tree-optimization/78005
index 45698d25cc1bd4fa1956449fb4b3dcc55ea37762..5dad1193c27ee48bbdf8dacbbe483f7e7e3c6d84 100644 (file)
@@ -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;