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: Take 3: RFA: re-instate struct_equiv code


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.
It would also remove most of the benefits of the register liveness sanity checks.
So I might as well remove the sanity checks and make the struct_equiv code
assume that any register that is allegedly live might not actually be live.



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