From: Chris Lattner <clattner@apple.com>
To: Ian Lance Taylor <iant@google.com>
Cc: Rafael Espindola <espindola@google.com>,
Nick Kledzik <kledzik@apple.com>,
Diego Novillo <dnovillo@google.com>,
GCC Mailing List <gcc@gcc.gnu.org>,
Kenneth Zadeck <zadeck@naturalbridge.com>,
Jan Hubicka <jh@suse.cz>, Ollie Wild <aaw@google.com>,
Robert Hundt <rhundt@google.com>,
Devang Patel <dpatel@apple.com>
Subject: Re: [whopr] Design/implementation alternatives for the driver and WPA
Date: Thu, 05 Jun 2008 16:44:00 -0000 [thread overview]
Message-ID: <99880898-CC99-4F3B-99AD-4109D4C65E27@apple.com> (raw)
In-Reply-To: <m3d4mwx9r4.fsf@google.com>
On Jun 5, 2008, at 6:59 AM, Ian Lance Taylor wrote:
> "Rafael Espindola" <espindola@google.com> writes:
>
>> Interesting. The use of lto_codegen_add_must_preserve_symbol is kind
>> of the opposite of what I had understood. What do you do in this
>> case:
>>
>> a.o: IL file that contains a reference to "f"
>> b.o: IL file that has a weak def of "f"
>>
>> There is no strong definition. Can you inline f into the use in a.o?
>
> I don't know what LLVM does, but in principle, in ELF, you can do this
> inlining when linking an executable, but not when linking a shared
> library. Actually, when linking a shared library, what matters is not
> whether the definition of "f" is weak or not, but what the visibility
> of 'f" is (default, hidden, protected, or internal). And, of course,
> the visibility of "f" can be set by link-time options (e.g.,
> -Bsymbolic).
In LLVM LTO, the model is that the linker is the one that knows about
visibility. The problem is that 'hidden' is not sufficient to capture
visibility info when mixing LTO modules with native ones. If you
have: [a-c].c and compile [ab].c with LTO and c.c without, any hidden
symbols should be visible outside the [ab].o LTO region.
LLVM LTO handles this by marking symbols "internal" (aka static, aka
not TREE_PUBLIC, whatever) when the symbol is not visible outside the
LTO scope. This allows the optimizers to go crazy and hack away at
the symbols, but only when safe.
'Weakness' only matters when a symbol is exported from the LTO scope,
so 'weak' and 'visibility' are orthogonal.
-Chris
next prev parent reply other threads:[~2008-06-05 16:44 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-03 16:46 Diego Novillo
2008-06-04 2:27 ` Chris Lattner
2008-06-04 7:28 ` Rafael Espindola
2008-06-04 16:34 ` Chris Lattner
2008-06-04 16:48 ` Rafael Espindola
2008-06-04 13:00 ` Diego Novillo
2008-06-04 15:28 ` Kenneth Zadeck
2008-06-04 15:54 ` Ian Lance Taylor
2008-06-04 16:50 ` Kenneth Zadeck
2008-06-04 17:05 ` Diego Novillo
2008-06-04 17:37 ` Ian Lance Taylor
2008-06-04 16:15 ` Chris Lattner
[not found] ` <65dd6fd50806041223l1871ecfbh384aa175c3da0645@mail.gmail.com>
2008-06-04 19:30 ` Fwd: " Ollie Wild
[not found] ` <89069638-6D2B-4AE6-ACB3-99A2B09091BA@apple.com>
2008-06-04 20:02 ` Ollie Wild
2008-06-04 23:59 ` Diego Novillo
2008-06-04 20:03 ` Kenneth Zadeck
2008-06-04 20:30 ` Ian Lance Taylor
2008-06-04 20:56 ` Diego Novillo
2008-06-05 15:10 ` Jan Hubicka
2008-06-05 15:23 ` Diego Novillo
2008-06-04 14:28 ` Ian Lance Taylor
2008-06-04 16:29 ` Chris Lattner
2008-06-04 16:41 ` Chris Lattner
2008-06-04 18:48 ` Devang Patel
2008-06-04 19:45 ` Ian Lance Taylor
2008-06-04 20:38 ` Nick Kledzik
2008-06-04 20:46 ` Ian Lance Taylor
2008-06-04 21:43 ` Nick Kledzik
2008-06-05 0:01 ` Ian Lance Taylor
2008-06-05 0:20 ` Nick Kledzik
2008-06-05 0:43 ` Ian Lance Taylor
2008-06-05 1:09 ` Nick Kledzik
2008-06-05 5:07 ` Devang Patel
2008-06-05 5:43 ` Ian Lance Taylor
2008-06-05 6:09 ` [whopr] plugin interface design Chris Lattner
2008-06-05 13:53 ` Ian Lance Taylor
2008-06-05 16:37 ` Chris Lattner
2008-06-05 17:39 ` Ian Lance Taylor
2008-06-07 18:31 ` Chris Lattner
2008-06-05 5:44 ` [whopr] Design/implementation alternatives for the driver and WPA Ian Lance Taylor
2008-06-05 8:41 ` Rafael Espindola
2008-06-05 14:00 ` Ian Lance Taylor
2008-06-05 16:44 ` Chris Lattner [this message]
2008-06-05 17:44 ` Ian Lance Taylor
2008-06-05 18:50 ` Nick Kledzik
2008-06-05 21:03 ` Ian Lance Taylor
2008-06-05 21:47 ` Chris Lattner
2008-06-06 1:22 ` Ian Lance Taylor
2008-06-07 18:34 ` Chris Lattner
[not found] ` <65dd6fd50806032310u2bda0953qb911e3ccfe3f305e@mail.gmail.com>
2008-06-04 19:29 ` Fwd: " Ollie Wild
2008-06-04 14:45 ` Ian Lance Taylor
2008-06-04 14:48 ` Diego Novillo
2008-06-04 15:28 ` Rafael Espindola
2008-06-04 16:31 ` Mark Mitchell
2008-07-04 3:31 ` Cary Coutant
2008-07-04 6:28 ` Ian Lance Taylor
2008-07-04 22:58 ` Daniel Jacobowitz
2008-07-06 7:30 ` Cary Coutant
2008-07-07 6:13 ` Ian Lance Taylor
2008-07-04 13:43 ` Rafael Espindola
2008-07-06 14:22 ` Cary Coutant
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=99880898-CC99-4F3B-99AD-4109D4C65E27@apple.com \
--to=clattner@apple.com \
--cc=aaw@google.com \
--cc=dnovillo@google.com \
--cc=dpatel@apple.com \
--cc=espindola@google.com \
--cc=gcc@gcc.gnu.org \
--cc=iant@google.com \
--cc=jh@suse.cz \
--cc=kledzik@apple.com \
--cc=rhundt@google.com \
--cc=zadeck@naturalbridge.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).