re PR tree-optimization/77916 (ICE in verify_gimple_in_cfg: invalid (pointer) operands to plus/minus)

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
This commit is contained in:
Bill Schmidt 2016-10-19 13:35:14 +00:00 committed by William Schmidt
parent a04df2babb
commit 6e3d8cb41d
2 changed files with 10 additions and 5 deletions

View 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> 2016-10-19 Bin Cheng <bin.cheng@arm.com>
PR tree-optimization/78005 PR tree-optimization/78005

View File

@ -2825,10 +2825,6 @@ analyze_increments (slsr_cand_t first_dep, machine_mode mode, bool speed)
&& !POINTER_TYPE_P (first_dep->cand_type))) && !POINTER_TYPE_P (first_dep->cand_type)))
incr_vec[i].cost = COST_NEUTRAL; 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 /* 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. the candidate's type to its stride's type can lose precision.
This could eventually be handled better by expressly retaining the 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) if (!profitable_increment_p (i)
|| incr == 1 || incr == 1
|| (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) || incr == 0)
continue; continue;