[LLVMdev] [Propose] Add address-taken bit to GlobalVariable for disambiguation purpose

Andrew Trick atrick at apple.com
Tue Oct 29 20:20:07 PDT 2013


On Oct 29, 2013, at 7:11 PM, Shuxin Yang <shuxin.llvm at gmail.com> wrote:

>> Also, as a general note, I don't see why any of this should be LTO-specific. For variables with local (internal) linkage, we can do the analysis on a per-module basis, and I don't understand why we currently don't.
>> 
>> Thanks again,
>> Hal
>> 
>> 
> You can understand from this example: Suppose the a.c b.c comprise the program where a.c has some static variable whose address
> are not taken.  The addr-taken information collected during stage time-stamp-0 cannot be found at time-stamp-1.2.
> 
> If we were saving the addr-not-taken info in GlobalVariable::not_addr_taken, optimizations in 1.2 will automatically benefit from
> cached information.

To answer Hal’s question, I think internal globals already benefit from Shuxin’s proposed optimization, independent of LTO. Shuxin is only pointing out a potential additional benefit, either in terms of compile time (not having to rerun the analysis) or optimization opportunities (for passes that run before GlobalOpt reruns).

Whether to split address-taken into a separate Analysis is a judgement call. Conceptually it could make sense as a separate analysis. I think Shuxin is pointing out that using a flag is a more straightforward approach, simpler to engineer, and has some potential benefits (although not huge benefits).

Either way, it could still make sense to factor the logic across GlobalOpt/GlobalModRef if it’s not too messy.

-Andy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131029/2ff4cdc4/attachment.html>


More information about the llvm-dev mailing list