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.