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: Avoid optimized out references to appear in lto symbol table


> 2011/10/2 Jan Hubicka <hubicka@ucw.cz>:
> >> > Index: tree-sra.c
> >> > ===================================================================
> >> > *** tree-sra.c ?(revision 179423)
> >> > --- tree-sra.c ?(working copy)
> >> > *************** modify_function (struct cgraph_node *nod
> >> > *** 4622,4627 ****
> >> > --- 4622,4628 ----
> >> > ? ?VEC (cgraph_edge_p, heap) * redirect_callers = collect_callers_of_node (node);
> >> >
> >> > ? ?rebuild_cgraph_edges ();
> >> > + ? free_dominance_info (CDI_DOMINATORS);
> >> > ? ?pop_cfun ();
> >> > ? ?current_function_decl = NULL_TREE;
> >>
> >>
> >> Extra change to tree-sra, not in ChangeLog. Is this hunk needed? Or
> >> unrelated fix for something else?
> >
> > It is needed - cgraph_remove_function sanity check that dminance info is clear and it is leaking here.
> > In the version I comitted there is changelog entry, so this must've been next-to-last diff. Sorry
> > for confussion.
> 
> But we don't free dominance information when it is correct.  So please don't
> do that.  Instead remove the sanity check and simply remove dominance
> information when you remove the function isntead.

The purpose for that check is to avoid having dominance tree built for whole
program.  Local optimizers should always build dominance tree only for the
current function, otherwise we sould burn quite noticeable % of memory in 
dominators that is no worthwhile because we never need it for whole program
and it is cheaper to recompute.

Normaly dominance info is freed for you by the passmanager, but because
the code in question creates new function that is not walked by PM, it has
to do by itself.

Honza
> 
> Thanks,
> Richard.
> 
> > Honza
> >
> >>
> >> Ciao!
> >> Steven
> >


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