tmsriram added a comment.

In https://reviews.llvm.org/D39079#905454, @joerg wrote:

> In https://reviews.llvm.org/D39079#905396, @rnk wrote:
>
> > In https://reviews.llvm.org/D39079#905372, @joerg wrote:
> >
> > > Why again is this a good idea?
> >
> >
> > It saves the direct jump to the PLT, reducing icache pressure, which is a 
> > major cost in some workloads.
>
>
> It also increases the pressure on the branch predictor, so it is not really 
> black and white.


My experiments show that doing this improves performance of some our large 
workloads by upto 1% and it happens with a reduction in iTLB misses.

> 
> 
>>> This is an even worse hack than -Bsymbolic,
>> 
>> Personally, I would like to build LLVM with -Bsymbolic so that we can build 
>> LLVM as a DSO and load it from clang without regressing startup time, so I 
>> don't see what's so terrible about -Bsymbolic, especially for C++ programs.
> 
> Qt5 tries that. Requires further hacks as the main binary must be compiled as 
> fully position independent code to not run into fun latter. Fun with copy 
> relocations is only part of it.
> 
>> Anyway, LLVM already has an attribute, nonlazybind, and this just provides a 
>> flag to apply it to all declarations. It gives the user access to the 
>> GOTPCREL relocations that we, and loaders, already support.
> 
> The loader doesn't see GOTPCREL anymore. It also requires a linker that 
> disassembles instructions, because it can't distinguish between a normal 
> pointer load and a call, to be able to optimize it.

The linker can replace indirect calls via GOTPCREL with direct calls, both GOLD 
and BFD linker support this today.


https://reviews.llvm.org/D39079



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to