This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[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
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 09 May 2012 09:10:35 +0000
- Subject: [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
- Auto-submitted: auto-generated
- References: <bug-53282-4@http.gcc.gnu.org/bugzilla/>
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?