http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53282
--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-05-09 09:10:35 UTC --- (In reply to comment #4) > Hi Honza, > I forgot to say that I tried both > -flto-partition=1to1 > and > -flto-partition=none > with the same result > > the point is that the symbols in question refers to a templated function > explicitly defined as > template edm::eventsetup::EventSetupRecordKey > edm::eventsetup::heterocontainer::makeKey<_recordclassname_, > edm::eventsetup::EventSetupRecordKey>() > > in the attached there are three of those: only one is hidden. > In the "real" library there are 307 of those, only 7 are hidden! > SO I suspect some sort of bug in lto > > I will try to produce a synthetic test All hidden symbols are postfixed with something like .local.77.4195, making them no longer the symbols for the explicitely instantiated functions. I suppose you say that the bug is that you have explicitely instantiated some templates which you want to have appear in the library as exported but LTO makes all instances hidden so that no externally visible symbol for that explicitely instantiated template remains?