http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59469
Jason Merrill <jason at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|c++ |ipa --- Comment #36 from Jason Merrill <jason at gcc dot gnu.org> --- (In reply to Jason Merrill from comment #34) > I tried adding a mark_needed call to mark_decl_instantiated, as in this > patch. But setting forced_by_abi on the cgraph node for the instantiation > doesn't seem to help; the LTO output still has a private symbol. With this patch (which I just checked in), the cgraph dump looks like _ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE21transferNodesFromListERNS_12ilist_traitsIS1_EENS_14ilist_iteratorIS1_EES8_/3692 (void llvm::SymbolTableListTraits<ValueSubClass, ItemParentClass>::transferNodesFromList(llvm::ilist_traits<NodeTy>&, llvm::ilist_iterator<NodeTy>, llvm::ilist_iterator<NodeTy>) [with ValueSubClass = llvm::BasicBlock; ItemParentClass = llvm::Function]) @0x7f75f3a373d8 Type: function definition analyzed Visibility: forced_by_abi public weak comdat_group:_ZN4llvm21SymbolTableListTraitsINS_10BasicBlockENS_8FunctionEE21transferNodesFromListERNS_12ilist_traitsIS1_EENS_14ilist_iteratorIS1_EES8_ one_only So I don't know why LTO is still turning it into a local symbol. Changing component back to ipa.