This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug lto/43038] DECL_PRESERVE_P or attribute((used)) static globals not completely preserved with -flto
- From: "joseph at codesourcery dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 1 Mar 2011 16:39:34 +0000
- Subject: [Bug lto/43038] DECL_PRESERVE_P or attribute((used)) static globals not completely preserved with -flto
- Auto-submitted: auto-generated
- References: <bug-43038-4@http.gcc.gnu.org/bugzilla/>
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43038
--- Comment #9 from joseph at codesourcery dot com <joseph at codesourcery dot com> 2011-03-01 16:39:23 UTC ---
On Tue, 1 Mar 2011, d.g.gorbachev at gmail dot com wrote:
> > The problem is that statics need to be mangled, so they persist
> > as i.1234 instead. Really refering to a local symbol in asm is
> > going to be difficult with LTO (any global or other static symbol
> > with name i will cause a non-resolvable conflict).
>
> One solution is to introduce a new attribute, say "nomangle", and shift
> responsibility for possible conflicts on a user.
The original LTO proposal included assembler changes to allow multiple
local symbols with the same name in the output. You could resurrect that,
though allowing references to the multiple local symbols from asm imposes
extra requirements on what the assembler interface must look like
(directives to say which versions are being referred to by asms in a
particular part of the input?).