On Thu, Oct 13, 2016 at 5:38 PM, Bill Schmidt
<wschm...@linux.vnet.ibm.com> wrote:
> The previous patch for
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77937 is necessary, but not
> sufficient in all cases.  It allows -1 to be used with a pointer
> increment, which we really do not want given that this is generally not
> profitable.  Disable this case for now.  We can add logic later to
> estimate the cost for the rare case where it can be useful.
>
> Bootstrapped and tested on powerpc64le-unknown-linux-gnu with no
> regressions, committed.

Huh, I wonder what is special about -1 here.  Do we handle -2?

Richard.

> Thanks,
> Bill
>
>
> 2016-10-13  Bill Schmidt  <wschm...@linux.vnet.ibm.com>
>
>         PR tree-optimization/77937
>         * gimple-ssa-strength-reduction.c (analyze_increments): Set cost
>         to infinite when we have a pointer with an increment of -1.
>
>
> Index: gcc/gimple-ssa-strength-reduction.c
> ===================================================================
> --- gcc/gimple-ssa-strength-reduction.c (revision 241120)
> +++ gcc/gimple-ssa-strength-reduction.c (working copy)
> @@ -2818,6 +2818,11 @@ analyze_increments (slsr_cand_t first_dep, machine
>                || (incr == -1
>                    && !POINTER_TYPE_P (first_dep->cand_type)))
>         incr_vec[i].cost = COST_NEUTRAL;
> +
> +      /* FIXME: We don't handle pointers with a -1 increment yet.
> +         They are usually unprofitable anyway.  */
> +      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.
>
>

Reply via email to