This is the mail archive of the
mailing list for the GCC project.
Re: [PATCH][RFC] Less TODO_remove_unused_locals
On Thu, 21 Feb 2013, Jan Hubicka wrote:
> > > Hunting for the "we're getting slower" bits I noticed that
> > > TODO_remove_unused_locals is a big part of execute_function_todo
> > > (and accounts for 1% of compile-time of ac.f90).
> > > The following patch removes most of the remove_unused_locals
> > > calls based on the fact that with anonymous SSA names now available
> > > we should never create new locals (wishful thinking of course ...)
> We still can kill references to existing ones.
> > > and the important places to remove unused stuff are driven by
> > > 1) avoid creating yet another copy of the unused stuff, thus do
> > > it before inlining, on the callee; 2) avoid pinning unused memory
> > > while we operate on other function bodies, thus, do it at the end
> > > of non-IPA pass pipelines
> > >
> > > In the end this asks for more explicit placement and thus a
> > > real pass ... but the following should be enough as a RFC and
> > > be good enough for 4.8.
> Yes, it looks good to me. I introduced this remove_unused_locals stuff
> and I was aware it is executed quite too often. I meant to get some data on
> but never got around that and moreover the number of execution has increased
> over the years as we increased number of passes...
> My recollection is that at that time the pass also did dropping of some flags
> (ADDRESSABLE?) promoting into Gimple registers. This was motivation to keep
> it working often since it was code quality thing too. I suppose this is now
> done elsewhere.
Yes, that's done with TODO_update_address_taken which is done in a more