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.