<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 6/20/2018 2:31 AM, Atheel Massalha
      via llvm-dev wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CADWSC+2pyaMLnwYD=rg6ONswQKdNFbrzbrUVwjYv-Vf_GHiF6w@mail.gmail.com">
      <div dir="ltr">
        <pre style="white-space:pre-wrap;color:rgb(0,0,0);text-decoration-style:initial;text-decoration-color:initial">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.</pre>
      </div>
    </blockquote>
    <br>
    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"?<br>
    <br>
    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.<br>
    <br>
    Could you implement this by just calling alias() with the sizes set
    to UnknownSize?<br>
    <br>
    <blockquote type="cite"
cite="mid:CADWSC+2pyaMLnwYD=rg6ONswQKdNFbrzbrUVwjYv-Vf_GHiF6w@mail.gmail.com">
      <div dir="ltr">
        <pre style="white-space:pre-wrap;color:rgb(0,0,0);text-decoration-style:initial;text-decoration-color:initial">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>)</pre>
      </div>
    </blockquote>
    <br>
    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.<br>
    <br>
    -Eli<br>
    <pre class="moz-signature" cols="72">-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project</pre>
  </body>
</html>