This is the mail archive of the gcc@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: intent in cfg_layout_initialize


> 
> In cfg_layout_initialize, there's a call to cleanup_cfg:
> 
>   cleanup_cfg (CLEANUP_CFGLAYOUT);
> 
> There's no comment here as to the intent.  Is it expected to do lots
> of (or any) optimizations?  Some are disabled in cfgcleanup.c when
> this flag is set, but not all.  Specifically, on an internal port I'm

The ones that are disabled are simply not needed in the form of CFG
where you can redirect edes, ie cleanup_cfg (CLEANUP_CFGLAYOUT) is as
strong as normal cleanup_cfg when in normal mode, just it ought to be a
tinny bit faster.

The intend is to gradually revamp whole compiler to use cfglayout mode.
> working on, enough optimization happens to invalidate the live
> registers list, and I get the ubiquitous "verify_local_live_at_start"
> error.
> 
> Should we (or could we) be passing CLEANUP_UPDATE_LIFE here?  Or
> should I dig into cfgcleanup.c and disable more optimizations?  Or is
> something else happening?
passing CLEANUP_UPDATE_LIFE would work.
You get the liveness invalidated when entering to cfglayout before
sched2, right?
I think best fix is to simply add parameter of cfglayout_initialize
specifying whether the liveness shall be preserved, as for tracer the
cfglayout_initialize is called before liveness is built.

Honza


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