------- Comment #3 from hubicka at ucw dot cz 2009-05-09 18:52 ------- Subject: Re: [4.5 Regression] error: missing callgraph edge for call stmt
Hi, I am testing the following: Index: cgraphunit.c =================================================================== --- cgraphunit.c (revision 147319) +++ cgraphunit.c (working copy) @@ -1762,7 +1762,12 @@ cgraph_materialize_all_clones (void) for (e = node->callees; e; e = e->next_callee) { 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_stmt_iterator gsi; @@ -1808,6 +1813,9 @@ cgraph_materialize_all_clones (void) verify_cgraph_node (node); #endif } +#ifdef ENABLE_CHECKING + verify_cgraph (); +#endif cgraph_remove_unreachable_nodes (false, cgraph_dump_file); } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40080