This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH GCC]Improve overflow in scev by using information computed in loop niter, part II
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: "Bin.Cheng" <amker dot cheng at gmail dot com>
- Cc: gcc-patches List <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 1 Jun 2015 12:41:39 +0200
- Subject: Re: [PATCH GCC]Improve overflow in scev by using information computed in loop niter, part II
- Authentication-results: sourceware.org; auth=none
- References: <CAHFci29fhP1kK9HC=mcvh2SqbOw-4WbkaaYpf8MFZ7WV1mx89A at mail dot gmail dot com>
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.