On Wed, 7 May 2014, Thomas Schwinge wrote: > Hi! > > On Tue, 15 Apr 2014 11:26:29 +0200 (CEST), Richard Biener wrote: > > This removes RTL loop unswitching > > > 2014-04-15 Richard Biener > > > > * 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 > 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 SUSE / SUSE Labs SUSE LINUX Products GmbH - Nuernberg - AG Nuernberg - HRB 16746 GF: Jeff Hawn, Jennifer Guild, Felix Imend"orffer