This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH GCC]Improve overflow in scev by using information computed in loop niter, part II


On Tue, May 26, 2015 at 1:13 PM, Bin.Cheng <amker.cheng@gmail.com> wrote:
> Hi,
> The first part patch improving how we handle overflow in scev is
> posted at https://gcc.gnu.org/ml/gcc-patches/2015-05/msg01795.html .
> Here comes the second part patch.
>
> This patch does below improvements:
>   1) Computes and records control iv for each loop's exit edge.  This
> provides a way to compute overflow information in loop niter and use
> it in different customers.  It think it's useful, especially with
> option -funsafe-loop-optimizers.
>   2) Improve chrec_convert by adding new interface
> loop_exits_before_overflow.  It checks if a converted IV overflows
> wrto its type and loop using overflow information of loop's control
> iv.  This basically propagates no-overflow information from control iv
> to ivs converted from control iv.  Moreover, we can further improve
> the logic by using possible VRP information in the future.
>
> With this patch, cases like scev-9.c and scev-10.c in patch can be
> handled now.  Cases reported in PR48052 can be vectorized too.
> Opinions?

-ENOPATCH

> Thanks,
> bin
>
>
> 2015-05-26  Bin Cheng  <bin.cheng@arm.com>
>
>     * cfgloop.h (struct control_iv): New.
>     (struct loop): New field control_ivs.
>     * tree-ssa-loop-niter.c : Include "stor-layout.h".
>     (number_of_iterations_lt): Set no_overflow information.
>     (number_of_iterations_exit): Init control iv in niter struct.
>     (record_control_iv): New.
>     (estimate_numbers_of_iterations_loop): Call record_control_iv.
>     (loop_exits_before_overflow): New.  Interface factored out of
>     scev_probably_wraps_p.
>     (scev_probably_wraps_p): Factor loop niter related code into
>     loop_exits_before_overflow.
>     (free_numbers_of_iterations_estimates_loop): Free control ivs.
>     * tree-ssa-loop-niter.h (free_loop_control_ivs): New.
>
> gcc/testsuite/ChangeLog
> 2015-05-26  Bin Cheng  <bin.cheng@arm.com>
>
>     PR tree-optimization/48052
>     * gcc.dg/tree-ssa/scev-8.c: New.
>     * gcc.dg/tree-ssa/scev-9.c: New.
>     * gcc.dg/tree-ssa/scev-10.c: New.
>     * gcc.dg/vect/pr48052.c: New.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]