From: Bill Schmidt Date: Wed, 26 Sep 2012 16:49:32 +0000 (+0000) Subject: re PR tree-optimization/54674 (ICE in build2_stat, at tree.c:3835) X-Git-Tag: misc/gccgo-go1_1_2~628 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=502514254fe172a687c21afd96777a33f3c4e11f;p=thirdparty%2Fgcc.git re PR tree-optimization/54674 (ICE in build2_stat, at tree.c:3835) 2012-09-26 Bill Schmidt PR tree-optimization/54674 * gimple-ssa-strength-reduction.c (analyze_increments): Don't introduce a multiplication with a pointer operand. From-SVN: r191765 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c2c072db9855..afcee648f33a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-09-26 Bill Schmidt + + PR tree-optimization/54674 + * gimple-ssa-strength-reduction.c (analyze_increments): Don't + introduce a multiplication with a pointer operand. + 2012-09-26 Georg-Johann Lay PR middle-end/54635 diff --git a/gcc/gimple-ssa-strength-reduction.c b/gcc/gimple-ssa-strength-reduction.c index 87684b305436..46600a57f813 100644 --- a/gcc/gimple-ssa-strength-reduction.c +++ b/gcc/gimple-ssa-strength-reduction.c @@ -2028,6 +2028,17 @@ analyze_increments (slsr_cand_t first_dep, enum machine_mode mode, bool speed) incr_vec[i].cost = COST_INFINITE; + /* If we need to add an initializer, make sure we don't introduce + a multiply by a pointer type, which can happen in certain cast + scenarios. FIXME: When cleaning up these cast issues, we can + afford to introduce the multiply provided we cast out to an + unsigned int of appropriate size. */ + else if (!incr_vec[i].initializer + && TREE_CODE (first_dep->stride) != INTEGER_CST + && POINTER_TYPE_P (TREE_TYPE (first_dep->stride))) + + incr_vec[i].cost = COST_INFINITE; + /* For any other increment, if this is a multiply candidate, we must introduce a temporary T and initialize it with T_0 = stride * increment. When optimizing for speed, walk the