http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53106
--- Comment #7 from Jan Hubicka <hubicka at gcc dot gnu.org> 2012-04-25 16:21:03 UTC --- Actually we make the node unanalyzed in this case. There is one misupdated place. I am testing the following patch. Index: ipa.c =================================================================== --- ipa.c (revision 186827) +++ ipa.c (working copy) @@ -262,7 +262,8 @@ cgraph_remove_unreachable_nodes (bool be for (next = cgraph (node->symbol.same_comdat_group); next != node; next = cgraph (next->symbol.same_comdat_group)) - if (!pointer_set_insert (reachable, next)) + if (!next->global.inlined_to + && !pointer_set_insert (reachable, next)) enqueue_cgraph_node (next, &first, reachable); } } @@ -276,7 +277,7 @@ cgraph_remove_unreachable_nodes (bool be { bool noninline = node->clone_of->symbol.decl != node->symbol.decl; node = node->clone_of; - if (noninline && !pointer_set_insert (reachable, node) && !node->symbol.aux) + if (noninline && !pointer_set_contains (reachable, node) && !node->symbol.aux) { enqueue_cgraph_node (node, &first, reachable); break;