http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53433

--- Comment #18 from Markus Trippelsdorf <markus at trippelsdorf dot de> 
2012-06-13 14:36:23 UTC ---
Created attachment 27615
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=27615
lto_bootstrap.patch

The following patch "fixes" the issue for me.
(Found by blindly poking around. But maybe this points in the right direction.
It just reverses a part of commit aa419a527f9156)

diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index 0dec33f..20a9a91 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -1123,12 +1123,11 @@ cgraph_only_called_directly_or_aliased_p (struct
cgraph_node *node)
 static inline bool
 varpool_can_remove_if_no_refs (struct varpool_node *node)
 {
-  if (DECL_EXTERNAL (node->symbol.decl))
-    return true;
   return (!node->symbol.force_output &&
!node->symbol.used_from_other_partition
-         && (DECL_COMDAT (node->symbol.decl)
+             && (DECL_COMDAT (node->symbol.decl)
              || !node->symbol.externally_visible
-             || DECL_HAS_VALUE_EXPR_P (node->symbol.decl)));
+             || DECL_HAS_VALUE_EXPR_P (node->symbol.decl)
+        || DECL_EXTERNAL (node->symbol.decl)));
 }

 /* Return true when all references to VNODE must be visible in ipa_ref_list.

Reply via email to