This is the mail archive of the gcc-patches@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: [PATCH][RFC] Remove TODO_ggc_collect, collect unconditionally


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.


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