This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH][RFC] Remove TODO_ggc_collect, collect unconditionally
- From: Richard Biener <rguenther at suse dot de>
- To: Bernd Schmidt <bernds at codesourcery dot com>
- Cc: gcc-patches at gcc dot gnu dot org, vmakarov at redhat dot com
- Date: Thu, 11 Apr 2013 12:39:32 +0200 (CEST)
- Subject: Re: [PATCH][RFC] Remove TODO_ggc_collect, collect unconditionally
- References: <alpine dot LNX dot 2 dot 00 dot 1303191327310 dot 3543 at zhemvz dot fhfr dot qr> <alpine dot LNX dot 2 dot 00 dot 1303191518000 dot 3543 at zhemvz dot fhfr dot qr> <alpine dot LNX dot 2 dot 00 dot 1303191634460 dot 3543 at zhemvz dot fhfr dot qr> <5166888E dot 3080906 at codesourcery dot com> <alpine dot LNX dot 2 dot 00 dot 1304111201470 dot 21094 at zhemvz dot fhfr dot qr> <51668C71 dot 2090004 at codesourcery dot com> <alpine dot LNX dot 2 dot 00 dot 1304111220140 dot 21094 at zhemvz dot fhfr dot qr> <516690FA dot 3000604 at codesourcery dot com>
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.