This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][RFC] Remove RTL loop unswitching
- From: Richard Biener <rguenther at suse dot de>
- To: Thomas Schwinge <thomas at codesourcery dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Wed, 7 May 2014 14:45:33 +0200 (CEST)
- Subject: Re: [PATCH][RFC] Remove RTL loop unswitching
- Authentication-results: sourceware.org; auth=none
- References: <alpine dot LSU dot 2 dot 11 dot 1404151123370 dot 31108 at zhemvz dot fhfr dot qr> <87k39x3ghs dot fsf at kepler dot schwinge dot homeip dot net>
On Wed, 7 May 2014, Thomas Schwinge wrote:
> Hi!
>
> On Tue, 15 Apr 2014 11:26:29 +0200 (CEST), Richard Biener <rguenther@suse.de> wrote:
> > This removes RTL loop unswitching
>
> > 2014-04-15 Richard Biener <rguenther@suse.de>
> >
> > * Makefile.in (OBJS): Remove loop-unswitch.o.
> > * loop-unswitch.c: Delete.
> > * tree-pass.h (make_pass_rtl_unswitch): Remove.
> > * passes.def (pass_rtl_unswitch): Likewise.
> > * loop-init.c (gate_rtl_unswitch): Likewise.
> > (rtl_unswitch): Likewise.
> > (pass_data_rtl_unswitch): Likewise.
> > (pass_rtl_unswitch): Likewise.
> > (make_pass_rtl_unswitch): Likewise.
> > * rtl.h (reversed_condition): Likewise.
> > (compare_and_jump_seq): Likewise.
> > * loop-iv.c (reversed_condition): Move here from loop-unswitch.c
> > and make static.
> > * loop-unroll.c (compare_and_jump_seq): Likewise.
>
> I found some more; OK to commit? Is a non-bootstrap build enough for
> this, or is a full bootstrap build and test needed?
That's enough.
Ok.
Thanks,
Richard.
> commit 8a703b1e7adc6001f665a12f93601382e3eea806
> Author: Thomas Schwinge <thomas@codesourcery.com>
> Date: Wed May 7 13:01:47 2014 +0200
>
> More gcc/loop-unswitch.c cleanup.
>
> gcc/
> * cfgloop.h (unswitch_loops): Remove.
> * doc/passes.texi: Remove references to loop-unswitch.c
> * timevar.def (TV_LOOP_UNSWITCH): Remove.
>
> diff --git gcc/cfgloop.h gcc/cfgloop.h
> index ab8b809..62a656a 100644
> --- gcc/cfgloop.h
> +++ gcc/cfgloop.h
> @@ -711,8 +711,6 @@ extern void loop_optimizer_init (unsigned);
> extern void loop_optimizer_finalize (void);
>
> /* Optimization passes. */
> -extern void unswitch_loops (void);
> -
> enum
> {
> UAP_PEEL = 1, /* Enables loop peeling. */
> diff --git gcc/doc/passes.texi gcc/doc/passes.texi
> index 2727b2c..fb064db 100644
> --- gcc/doc/passes.texi
> +++ gcc/doc/passes.texi
> @@ -474,10 +474,7 @@ merging and induction variable elimination. The pass is implemented in
> Loop unswitching. This pass moves the conditional jumps that are invariant
> out of the loops. To achieve this, a duplicate of the loop is created for
> each possible outcome of conditional jump(s). The pass is implemented in
> -@file{tree-ssa-loop-unswitch.c}. This pass should eventually replace the
> -RTL level loop unswitching in @file{loop-unswitch.c}, but currently
> -the RTL level pass is not completely redundant yet due to deficiencies
> -in tree level alias analysis.
> +@file{tree-ssa-loop-unswitch.c}.
>
> The optimizations also use various utility functions contained in
> @file{tree-ssa-loop-manip.c}, @file{cfgloop.c}, @file{cfgloopanal.c} and
> @@ -793,8 +790,8 @@ The source files @file{cfgloopanal.c} and @file{cfgloopmanip.c} contain
> generic loop analysis and manipulation code. Initialization and finalization
> of loop structures is handled by @file{loop-init.c}.
> A loop invariant motion pass is implemented in @file{loop-invariant.c}.
> -Basic block level optimizations---unrolling, peeling and unswitching loops---
> -are implemented in @file{loop-unswitch.c} and @file{loop-unroll.c}.
> +Basic block level optimizations---unrolling, and peeling loops---
> +are implemented in @file{loop-unroll.c}.
> Replacing of the exit condition of loops by special machine-dependent
> instructions is handled by @file{loop-doloop.c}.
>
> diff --git gcc/timevar.def gcc/timevar.def
> index 9faf98b..2db1943 100644
> --- gcc/timevar.def
> +++ gcc/timevar.def
> @@ -207,7 +207,6 @@ DEFTIMEVAR (TV_DSE2 , "dead store elim2")
> DEFTIMEVAR (TV_LOOP , "loop analysis")
> DEFTIMEVAR (TV_LOOP_INIT , "loop init")
> DEFTIMEVAR (TV_LOOP_MOVE_INVARIANTS , "loop invariant motion")
> -DEFTIMEVAR (TV_LOOP_UNSWITCH , "loop unswitching")
> DEFTIMEVAR (TV_LOOP_UNROLL , "loop unrolling")
> DEFTIMEVAR (TV_LOOP_DOLOOP , "loop doloop")
> DEFTIMEVAR (TV_LOOP_FINI , "loop fini")
>
>
> GrÃÃe,
> Thomas
>
--
Richard Biener <rguenther@suse.de>
SUSE / SUSE Labs
SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746
GF: Jeff Hawn, Jennifer Guild, Felix Imend"orffer