Commit 9a23acef by Jan Hubicka Committed by Jan Hubicka

re PR middle-end/40080 (error: missing callgraph edge for call stmt)


	PR middle-end/40080
	* cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
	indirect calls; verify cgraph afterwards.

From-SVN: r147320
parent d563610d
2009-05-09 Jan Hubicka <jh@suse.cz> 2009-05-09 Jan Hubicka <jh@suse.cz>
PR middle-end/40080
* cgraphunit.c (cgraph_materialize_all_clones): Do not redirect
indirect calls; verify cgraph afterwards.
2009-05-09 Jan Hubicka <jh@suse.cz>
PR bootstrap/40082 PR bootstrap/40082
* ipa.c (update_inlined_to_pointer): New function. * ipa.c (update_inlined_to_pointer): New function.
(cgraph_remove_unreachable_nodes): Use it. (cgraph_remove_unreachable_nodes): Use it.
......
...@@ -1762,7 +1762,12 @@ cgraph_materialize_all_clones (void) ...@@ -1762,7 +1762,12 @@ cgraph_materialize_all_clones (void)
for (e = node->callees; e; e = e->next_callee) for (e = node->callees; e; e = e->next_callee)
{ {
tree decl = gimple_call_fndecl (e->call_stmt); tree decl = gimple_call_fndecl (e->call_stmt);
if (decl != e->callee->decl) /* When function gets inlined, indirect inlining might've invented
new edge for orginally indirect stmt. Since we are not
preserving clones in the original form, we must not update here
since other inline clones don't need to contain call to the same
call. Inliner will do the substitution for us later. */
if (decl && decl != e->callee->decl)
{ {
gimple new_stmt; gimple new_stmt;
gimple_stmt_iterator gsi; gimple_stmt_iterator gsi;
...@@ -1808,6 +1813,9 @@ cgraph_materialize_all_clones (void) ...@@ -1808,6 +1813,9 @@ cgraph_materialize_all_clones (void)
verify_cgraph_node (node); verify_cgraph_node (node);
#endif #endif
} }
#ifdef ENABLE_CHECKING
verify_cgraph ();
#endif
cgraph_remove_unreachable_nodes (false, cgraph_dump_file); cgraph_remove_unreachable_nodes (false, cgraph_dump_file);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment