Take 3: RFA: re-instate struct_equiv code
Daniel Berlin
dberlin@dberlin.org
Wed Feb 8 17:17:00 GMT 2006
On Wed, 2006-02-08 at 15:12 +0000, Joern RENNECKE wrote:
> In http://gcc.gnu.org/ml/gcc-patches/2006-02/msg00673.html, Bernd
> Schmidt wrote:
> > > Joern RENNECKE wrote:
> > >
> > > * basic-block.h (maybe_killed_reg): Define.
> > > (struct control_flow_graph): Add new member x_maybe_killed_regs.
> > > (used_by_bb_end): Declare.
> > > * flow.c (allocate_bb_life_data): Allocate maybe_killed_regs.
> > > (used_by_bb_end): New function.
> > > * cfgrtl.c (try_redirect_by_replacing_jump): Update
> maybe_killed_regs.
> >
> >
> > I'm sorry, but no. This is too ad-hoc, and too brittle. We need to
> find something more solid. I've had some success moving cross jumping
> out of the main loop in try_optimize_cfg, I just need to do some timings
> after adding a life update and reenabling struct-equiv.
>
> Moving cross-jumping out of the main loop in try_optimize_cfg is a knee-jerk
> reaction, and likely to loose us optimizations.
I very highly doubt this.
While cleanup_cfg is called roughly everywhere, i have a *very very*
hard time believing that every single optimization pass will expose new
cross-jumping opportunities in a way that if you just run this stuff,
say, twice (once early, once late), you won't catch 90-99% of them.
I also have a very hard time believing the ones you don't catch this way
matter so much that it's worth the compilation time hit we currently
take.
--Dan
More information about the Gcc-patches
mailing list