This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Take 3: RFA: re-instate struct_equiv code
- From: Joern RENNECKE <joern dot rennecke at st dot com>
- To: Bernd Schmidt <bernds_cb1 at t-online dot de>
- Cc: Daniel Berlin <dberlin at dberlin dot org>, Steven Bosscher <stevenb dot gcc at gmail dot com>, gcc-patches at gcc dot gnu dot org
- Date: Wed, 08 Feb 2006 15:12:41 +0000
- Subject: 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.