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: gcc-patches at gcc dot gnu dot org
- Date: Wed, 10 Apr 2013 13:35:42 +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> <alpine dot LNX dot 2 dot 00 dot 1303211001460 dot 3543 at zhemvz dot fhfr dot qr>
On Thu, 21 Mar 2013, Richard Biener wrote:
> On Tue, 19 Mar 2013, Richard Biener wrote:
>
> > On Tue, 19 Mar 2013, Richard Biener wrote:
> >
> > > On Tue, 19 Mar 2013, Richard Biener wrote:
> > >
> > > >
> > > > This adds a GC collection point after each pass instead just after
> > > > those with TODO_ggc_collect in their todo. The patch will possibly
> > > > slow-down gcac checking a bit (80 passes have TODO_ggc_collect,
> > > > I didn't try to enumerate those that do not, but a grep shows we
> > > > may have up to 212 passes. OTOH gcac checking will now "properly"
> > > > verify that all pass boundaries are suitable for collection.
> > > >
> > > > A complete patch will remove TODO_ggc_collect and all its uses
> > > > as well.
> > > >
> > > > The patch should result in lower peak memory consumption for
> > > > some of the odd testcases that we worked on.
> > > >
> > > > Bootstrap & regtest scheduled on x86_64-unknown-linux-gnu.
> > >
> > > Which shows that I need to merge the IRA and reload/lra passes.
> > > Honza tells me that they are considered "separate" has historical
> > > reasons only. Given that reload pushes TV_IRA and that the boundary
> > > isn't GC safe I don't think that is too bad (dump files will now
> > > be shared, of course).
> > >
> > > I'll schedule a gcac checking bootstrap over night as well.
> >
> > The following is it, changelog omits the boring part (enumerating
> > all files and pass structs touched ...).
> >
> > Regularly bootstrapped and tested on x86_64-unknown-linux-gnu,
> > the gcac one is still running (as expected ...).
> >
> > Any objections?
>
> One testcase, g++.dg/pr55604.C, needs adjustment (it uses
> -fdump-rtl-reload which is gone after the patch).
>
> I let a gcac bootstrap run into stage3 (and then killed it after
> 3 days ...). I also built a gcac compiler without bootstrapping
> and ran the testsuite. Unfortunately that results in lot of
> timeouts and weird errors. I have reported PR56673 for a GC issue
> unrelated to this patch (multi-versioning is broken). Weird errors
> include -frepo linking errors.
>
> Any hints on how to globally disable the dejagnu timeout so I can
> eventually get a clean gcac testsuite run without the patch to
> compare against (I doubt -frepo errors can be related to this patch).
I went ahead with this now, given no comments at all and this
both bit-rotting and blocking the IL verifier TODO cleanups
in my pipeline.
Re-bootstrapped and tested on x86_64-unknown-linux-gnu and
committed.
Richard.
> > 2013-03-19 Richard Biener <rguenther@suse.de>
> >
> > * passes.c (execute_todo): Do not call ggc_collect conditional here.
> > (execute_one_ipa_transform_pass): But unconditionally here.
> > (execute_one_pass): And here.
> > (init_optimization_passes): Remove reload pass.
> > * tree-pass.h (TODO_ggc_collect): Remove.
> > (pass_reload): Likewise.
> > * ira.c (do_reload): Merge into ...
> > (ira): ... this.
> > (rest_of_handle_reload): Remove.
> > (pass_reload): Likewise.
> > * config/i386/i386.c (ix86_option_override): Refer to ira instead
> > of reload for vzeroupper pass placement.
> > * <everywhere>: Remove TODO_ggc_collect from todo_flags_start
> > and todo_flags_finish of all passes.