On Thu, 11 Apr 2013, Bernd Schmidt wrote:

> On 04/11/2013 12:26 PM, Richard Biener wrote:
> > 
> > The point was not to remove TODO_ggc_collect, the point was to
> > both enforce the GC boundary at all passes (that's what the pass
> > manager assumes anyway) and to collect when necessary at such
> > well-defined boundaries.  Another approach would have been to
> > add TODO_ggc_collect everywhere where it wasn't.
> 
> > Note that pending patches will similarly enforce a verification
> > of all IL properties that are seemingly active.
> [...]
> 
> > So, the option I didn't mention is to add a way to disable the
> > GC (clearing/setting a property for example).
> 
> Maybe a "subpass" bit that could be set on IRA (or any other pass that
> only prepares for another, it might be nice to split up some overly
> large md_reorg passes) so that all these verifications and GC are skipped?

I suppose splitting to split the dump files?  Or to expose the
fact of "different passes" to the pass manager?

One "easy" way to do it would be to have a "regalloc" pass
and in its execute manually execute two sub-passes "ira" and "reload".
Manually, by doing parts of passes.c:execute_one_pass ():

  pass_init_dump_file (&ira);
  timevar_push (ira.tv_id);
  ira.execute ();
  pass_fini_dump_file (&ira);
... same for reload ...

but then the exercise would only be for creating two different dump
files (three actually, one empty for the containing "regalloc" pass).

Richard.

Reply via email to