Message ID | 41b75544-3795-6c84-c9b4-6dcaf4829add@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On 2016.10.12 at 20:14 -0500, Bill Schmidt wrote: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77937 reports an ICE in SLSR > where a POINTER_PLUS_EXPR occurs with a candidate increment of -1. This > is supposed to be prevented by code in analyze_increments, since replacement > of such a candidate is not guaranteed to be profitable. The test for this > was inadequate. This patch replaces it with the correct check, determining > whether the type of the candidate is a pointer type. > > Bootstrapped and tested on powerpc64le-unknown-linux-gnu, committed. Please commit the small testcase from the bug, too. Thanks.
Index: gcc/gimple-ssa-strength-reduction.c =================================================================== --- gcc/gimple-ssa-strength-reduction.c (revision 240946) +++ gcc/gimple-ssa-strength-reduction.c (working copy) @@ -2816,8 +2816,7 @@ analyze_increments (slsr_cand_t first_dep, machine else if (incr == 0 || incr == 1 || (incr == -1 - && (gimple_assign_rhs_code (first_dep->cand_stmt) - != POINTER_PLUS_EXPR))) + && !POINTER_TYPE_P (first_dep->cand_type))) incr_vec[i].cost = COST_NEUTRAL; /* FORNOW: If we need to add an initializer, give up if a cast from