http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55797
--- Comment #10 from Jan Hubicka <hubicka at gcc dot gnu.org> 2013-01-23 14:19:51 UTC --- I am testing the following patch. It is a side case where we save function body but the function we save the body of becomes unnecesary as a result of dead block removal during inlining that is caused by ipa-pure-const proving function nothorw. We get it almost right by removing the unnecesary clone after saving, but we forget about the edge. Index: cgraphclones.c =================================================================== --- cgraphclones.c (revision 195370) +++ cgraphclones.c (working copy) @@ -570,7 +570,10 @@ cgraph_remove_node_and_inline_clones (st bool found = false; if (node == forbidden_node) - return true; + { + cgraph_remove_edge (node->callers); + return true; + } for (e = node->callees; e; e = next) { next = e->next_callee;