This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug lto/53282] lto and visibility-inlines-hidden makes "wrongly" hidden symbols and in a way that depends on the order of the input compilation units


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?


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]