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;

Reply via email to