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