On Thu, May 28, 2015 at 11:41:10AM -0700, Richard Henderson wrote:
> On 05/28/2015 10:59 AM, Rich Felker wrote:
> >Am I missing something?
> 
> You're not missing anything.  But do you want the performance of a
> library to depend on how the main executable is compiled?

Not directly. But I'd rather be in that situation than have
pessimizations in library codegen to avoid it. I'm worried about cases
where code both loads the address of a function and calls it, such as
this (stupid) example:

        a((void *)a);

Would having separate handling of the address-for-call and
address-for-function-pointer result in the compiler emitting 2
separate GOT loads (and consuming 2 registers) here in an effort to
avoid the possibility of inefficiency from a PLT thunk in the main
program?

In my vision, main programs are always or almost-always (e.g. just
exceptions for stuff like emacs) PIE and the PLT-in-main-program issue
is a non-issue, so I don't want to risk hurting codegen on the library
side just to make a legacy usage (non-PIE) mildly more efficient.

Rich

Reply via email to