[llvm-dev] adding 2 new functions to the AliasAnalysis interface

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Wed Jun 20 12:02:01 PDT 2018


On 6/20/2018 2:31 AM, Atheel Massalha via llvm-dev wrote:
> Hi,
> RFC
>
> Im adding 2 new functions to the AliasAnalysis interface:
>
> 1) ModRefSameBufferCheck:
>
> this function will receive 2 memoryLocation as parameters, and returns
> true if the parameters are modifying or refering the same buffer or
> same memory block, false otherwise.

I'm not completely sure what "same buffer" means; is it just that given 
MemoryLocations with addresses A and B, an offset N exists such that 
gep(A,N) is mustalias with B?  What happens if alias can't prove whether 
the two locations point to the "same buffer"?

Is that actually the property you care about?  DependenceAnalysis would 
probably be more appropriate if you're trying to analyze cross-iteration 
dependencies in loops.

Could you implement this by just calling alias() with the sizes set to 
UnknownSize?

> 2) getAddressesDistance:
>
> the function will recieve 2 memoryLocation, if they are mod/ref-ing
> the same buffer/memory block, the function will return the distance
> between those locations at the memory. None otherwise
> (Optional<int64_t>)

If I'm following correctly, given two values A and B, if a small 
constant offset N is known such that A+N==B, N is returned; if the 
distance is unknown or not a constant, None is returned.  Not sure why 
the API takes memoryLocations, instead of just two Value*.  Not sure 
this really belongs in AliasAnalysis.

-Eli

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180620/5dafc780/attachment.html>


More information about the llvm-dev mailing list