On 11/08/2017 09:49 AM, Richard Sandiford wrote:
> We had:
> 
>       if (vec_outside_cost <= 0)
>         min_profitable_iters = 0;
>       else
>         {
>         min_profitable_iters = ((vec_outside_cost - scalar_outside_cost)
>                                 * assumed_vf
>                                 - vec_inside_cost * peel_iters_prologue
>                                 - vec_inside_cost * peel_iters_epilogue)
>                                / ((scalar_single_iter_cost * assumed_vf)
>                                   - vec_inside_cost);
> 
> which can lead to negative min_profitable_iters when the *_outside_costs
> are the same and peel_iters_epilogue is nonzero (e.g. if we're peeling
> for gaps).
> 
> This is tested as part of the patch that adds support for fully-predicated
> loops.
> 
> Tested on aarch64-linux-gnu (both with and without SVE), x86_64-linux-gnu
> and powerpc64le-linux-gnu.  OK to install?
> 
> Thanks,
> Richard
> 
> 
> 2017-11-08  Richard Sandiford  <richard.sandif...@linaro.org>
>           Alan Hayward  <alan.hayw...@arm.com>
>           David Sherwood  <david.sherw...@arm.com>
> 
> gcc/
>       * tree-vect-loop.c (vect_estimate_min_profitable_iters): Make sure
>       min_profitable_iters doesn't go negative.
OK.
jeff

Reply via email to