[llvm-commits] [llvm] r71443 - /llvm/trunk/lib/Target/README.txt

Chris Lattner clattner at apple.com
Mon May 11 11:09:42 PDT 2009


On May 11, 2009, at 11:04 AM, Frits van Bommel wrote:

> Chris Lattner wrote:
>> Log:
>> remove some done things: we have nocapture and SROA is smarter.
>
>> -2. Generalize readonly to be set on parameters.  This is important  
>> mod/ref
>> -   info for the function, which is important for basicaa and  
>> others.  It can
>> -   also be used by the inliner to avoid inserting a memcpy for byval
>> -   arguments when the function is inlined.
>
> I wasn't aware this was implemented? It's not in LangRef.html...

No, but this is sufficiently dubious that it isn't worth being in  
readme.txt

>> -These functions can be inferred by various analysis passes such as  
>> the
>> -globalsmodrefaa pass.  Note that getting #2 right is actually  
>> really tricky.
>> -Consider this code:
>> -
>> -struct S;  S G;
>> -void caller(S byvalarg) { G.field = 1; ... }
>> -void callee() { caller(G); }
>> -
>> -The fact that the caller does not modify byval arg is not enough,  
>> we need
>> -to know that it doesn't modify G either.  This is very tricky.
>
> Is this trickyness the reason it was given up on?

Yes.

> Can't the attribute just mean it's not modified through the  
> parameter, so that
> passes wanting to use this information would also need to prove the  
> argument
> being passed in at the particular callsite is not modified through  
> other means?
> That way e.g. non-escaped locals could still benefit from this (even  
> if a global
> was passed in at some other callsite).

That isn't particularly useful information for the optimizers.  When/ 
if we tackle something like this, this entry in the readme won't be  
helpful.

-Chris



More information about the llvm-commits mailing list