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 1/2, PR 63814] Strengthen cgraph_edge_brings_value_p


> > Hi,
> > 
> > PR 63814 is caused by cgraph_edge_brings_value_p misidentifying an
> > edge to an expanded artificial thunk as an edge to the original node,
> > which then leads to crazy double-cloning and doubling the thunks along
> > the call.
> > 
> > This patch fixes the bug by strengthening the predicate so that it
> > knows where the value is supposed to go and can check that it goes
> > there and not anywhere else.  It also adds an extra availability check
> > that was probably missing in it.
> > 
> > Bootstrapped and tested on x86_64-linux, and i686-linux.  OK for
> > trunk?
> > 
> > Thanks,
> > 
> > Martin
> > 
> > 
> > 2014-11-20  Martin Jambor  <mjambor@suse.cz>
> > 
> > 	PR ipa/63814
> > 	* ipa-cp.c (same_node_or_its_all_contexts_clone_p): New function.
> > 	(cgraph_edge_brings_value_p): New parameter dest, use
> > 	same_node_or_its_all_contexts_clone_p and check availability.
> > 	(cgraph_edge_brings_value_p): Likewise.
> > 	(get_info_about_necessary_edges): New parameter dest, pass it to
> > 	cgraph_edge_brings_value_p.  Update caller.
> > 	(gather_edges_for_value): Likewise.
> > 	(perhaps_add_new_callers): Use cgraph_edge_brings_value_p to check
> > 	both the destination and availability.

OK


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