<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 11/17/2017 02:13 AM, Hongbin Zheng
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAJ0ZJHRiyTKak2OuUd3FLPyuo1ayC8ijC0BYah7ycaCOv_Z9Bg@mail.gmail.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <div dir="ltr"><br>
        <div class="gmail_extra"><br>
          <div class="gmail_quote">On Fri, Nov 17, 2017 at 12:07 AM, Hal
            Finkel <span dir="ltr"><<a moz-do-not-send="true"
                href="mailto:hfinkel@anl.gov" target="_blank">hfinkel@anl.gov</a>></span>
            wrote:<br>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div bgcolor="#FFFFFF"><span class="gmail-">
                  <p><br>
                  </p>
                  <div class="gmail-m_607283191610384526moz-cite-prefix">On
                    11/17/2017 02:01 AM, Hongbin Zheng wrote:<br>
                  </div>
                  <blockquote type="cite">
                    <div dir="ltr">Do you mean a and b are noalias if:
                      <div><br>
                      </div>
                      <div><span style="font-size:12.8px">static int
                          foo(int *a, int *b) {</span><br
                          style="font-size:12.8px">
                        <span style="font-size:12.8px">  return a[0] +
                          b[0];</span><br style="font-size:12.8px">
                        <span style="font-size:12.8px">}</span><br
                          style="font-size:12.8px">
                        <br style="font-size:12.8px">
                        <span style="font-size:12.8px">int bar(int *x) {</span><br
                          style="font-size:12.8px">
                        <span style="font-size:12.8px">  return foo(x+1,
                          x);</span><br style="font-size:12.8px">
                        <span style="font-size:12.8px">}</span><br>
                      </div>
                      <div><span style="font-size:12.8px"><br>
                        </span></div>
                      <div><span style="font-size:12.8px">?</span></div>
                      <div><span style="font-size:12.8px"><br>
                        </span></div>
                      <div><span style="font-size:12.8px">To me, because
                          "AA.alias((x+1, <wbr>MemoryLocation::UnknownSize), </span><span
                          style="font-size:12.8px"><wbr>(x, MemoryLocation::<wbr>UnknownSize))</span><span
                          style="font-size:12.8px"> != NoAlias", so a
                          and b are not noalias.</span></div>
                    </div>
                  </blockquote>
                  <br>
                </span> Remember that MemoryLocation::UnknownSize is
                unknown, but positive. So you need to check both
                "AA.alias((x+1, MemoryLocation::UnknownSize), (x,
                MemoryLocation::UnknownSize)) == NoAlias" and
                "AA.alias((x, MemoryLocation::UnknownSize), (x+1,
                MemoryLocation::UnknownSize)) == NoAlias" to partition
                by underlying object. One of these should be false.</div>
            </blockquote>
            <div><br>
            </div>
            <div>Thanks a lot for the explanation.</div>
            <div>Do you mean AA.alias(X,Y) may not always return the
              same result as AA.alias(Y,X)? (otherwise why we need to do
              both of them)</div>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    <br>
    Yes, but I should clarify (what I typed gives the wrong
    implication). If both values have an unknown size, then it should be
    symmetric. If only one is, however, there can be a difference
    between:<br>
    <br>
    | x | | y .... -> |<br>
    <br>
    and:<br>
    <br>
    | x ... -> |<br>
        | y |<br>
    <br>
    and this is because the unknown size is unknown, but positive.<br>
    <br>
     -Hal<br>
    <br>
    <blockquote
cite="mid:CAJ0ZJHRiyTKak2OuUd3FLPyuo1ayC8ijC0BYah7ycaCOv_Z9Bg@mail.gmail.com"
      type="cite">
      <div dir="ltr">
        <div class="gmail_extra">
          <div class="gmail_quote">
            <div>[1] Didn't mention this detail.</div>
            <div><br>
            </div>
            <div>Thanks again</div>
            <div>Hongbin</div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div>[1] <a moz-do-not-send="true"
                href="https://llvm.org/docs/AliasAnalysis.html#the-alias-method">https://llvm.org/docs/AliasAnalysis.html#the-alias-method</a></div>
            <div><br>
            </div>
            <div><br>
            </div>
            <div> </div>
            <blockquote class="gmail_quote" style="margin:0px 0px 0px
              0.8ex;border-left:1px solid
              rgb(204,204,204);padding-left:1ex">
              <div bgcolor="#FFFFFF"><span class="gmail-HOEnZb"><font
                    color="#888888"><br>
                    <br>
                     -Hal</font></span>
                <div>
                  <div class="gmail-h5"><br>
                    <br>
                    <blockquote type="cite">
                      <div dir="ltr">
                        <div><span style="font-size:12.8px">Maybe my
                            version is too conservative.</span></div>
                        <div><span style="font-size:12.8px"><br>
                          </span></div>
                        <div><span style="font-size:12.8px">Thanks</span></div>
                        <div><span style="font-size:12.8px">Hongbin</span></div>
                        <div><span style="font-size:12.8px"><br>
                          </span></div>
                      </div>
                      <div class="gmail_extra"><br>
                        <div class="gmail_quote">On Thu, Nov 16, 2017 at
                          11:55 PM, Hal Finkel <span dir="ltr"><<a
                              moz-do-not-send="true"
                              href="mailto:hfinkel@anl.gov"
                              target="_blank">hfinkel@anl.gov</a>></span>
                          wrote:<br>
                          <blockquote class="gmail_quote"
                            style="margin:0px 0px 0px
                            0.8ex;border-left:1px solid
                            rgb(204,204,204);padding-left:1ex">
                            <div bgcolor="#FFFFFF"><span>
                                <p><br>
                                </p>
                                <div
                                  class="gmail-m_607283191610384526m_4344742898765767199moz-cite-prefix">On
                                  11/17/2017 01:49 AM, Hongbin Zheng
                                  wrote:<br>
                                </div>
                                <blockquote type="cite">
                                  <div dir="ltr">Could you elaborate "<span
                                      style="font-size:12.8px">Note
                                      that, without further analysis of
                                      the uses of the
                                      potentially-noalias pointers, you
                                      can do this only ...</span>"? 
                                    <div>Why the uses, instead of the
                                      def, of pointer matter?</div>
                                  </div>
                                </blockquote>
                                <br>
                              </span> Both matter.<br>
                              <br>
                              static int foo(int *a, int *b) {<br>
                                return a[0] + b[1];<br>
                              }<br>
                              <br>
                              int bar(int *x) {<br>
                                return foo(x+1, x);<br>
                              }<br>
                              <br>
                              You can't mark a and b as noalias here,
                              even though NoAlias(x+1, x) == true. This
                              is why I was saying that, unless the
                              pointers come from distinct, identified
                              underlying objects, you need to look at
                              the uses of the pointers too.<span
                                class="gmail-m_607283191610384526HOEnZb"><font
                                  color="#888888"><br>
                                  <br>
                                   -Hal<br>
                                </font></span><br>
                              P.S. As discussed in D4609, we probably
                              want to try adding CGSCC AA wrappers, to
                              look back through function arguments,
                              instead of using attribute propagation.
                              <div>
                                <div
                                  class="gmail-m_607283191610384526h5"><br>
                                  <br>
                                  <blockquote type="cite">
                                    <div dir="ltr">
                                      <div><br>
                                      </div>
                                      <div>Thanks</div>
                                      <div>Hongbin</div>
                                    </div>
                                    <div class="gmail_extra"><br>
                                      <div class="gmail_quote">On Thu,
                                        Nov 16, 2017 at 11:21 PM, Hal
                                        Finkel via llvm-dev <span
                                          dir="ltr"><<a
                                            moz-do-not-send="true"
                                            href="mailto:llvm-dev@lists.llvm.org"
                                            target="_blank">llvm-dev@lists.llvm.org</a>></span>
                                        wrote:<br>
                                        <blockquote class="gmail_quote"
                                          style="margin:0px 0px 0px
                                          0.8ex;border-left:1px solid
                                          rgb(204,204,204);padding-left:1ex">Hi,
                                          Alexandre,<br>
                                          <br>
                                          We don't have anything
                                          currently which does this.
                                          Note that, without further
                                          analysis of the uses of the
                                          potentially-noalias pointers,
                                          you can do this only for
                                          arguments with distinct (and
                                          identified) underlying objects
                                          (i.e., you need something a
                                          bit stronger than just
                                          "non-aliasing pointers").<br>
                                          <br>
                                           -Hal
                                          <div
                                            class="gmail-m_607283191610384526m_4344742898765767199HOEnZb">
                                            <div
                                              class="gmail-m_607283191610384526m_4344742898765767199h5"><br>
                                              <br>
                                              On 11/16/2017 10:11 AM,
                                              via llvm-dev wrote:<br>
                                              <blockquote
                                                class="gmail_quote"
                                                style="margin:0px 0px
                                                0px
                                                0.8ex;border-left:1px
                                                solid
                                                rgb(204,204,204);padding-left:1ex">
                                                Is this what you are
                                                looking for?<br>
                                                <br>
                                                <a
                                                  moz-do-not-send="true"
href="https://reviews.llvm.org/D4609" rel="noreferrer" target="_blank">https://reviews.llvm.org/D4609</a><br>
                                                <br>
                                                Best,<br>
                                                <br>
                                                Haicheng Wu<br>
                                                <br>
                                                On 2017-11-14 20:34,
                                                Alexandre Isoard via
                                                llvm-dev wrote:<br>
                                                <blockquote
                                                  class="gmail_quote"
                                                  style="margin:0px 0px
                                                  0px
                                                  0.8ex;border-left:1px
                                                  solid
                                                  rgb(204,204,204);padding-left:1ex">
                                                  Hello,<br>
                                                  <br>
                                                  Do we have a pass that
                                                  propagate the noalias
                                                  annotation down to the<br>
                                                  callee when:<br>
                                                  - it is static<br>
                                                  - it is always called
                                                  with non aliasing
                                                  pointers<br>
                                                  ?<br>
                                                  <br>
                                                  Or maybe that is
                                                  incorrect?<br>
                                                  <br>
                                                  -- <br>
                                                  <br>
                                                  ALEXANDRE ISOARD<br>
                                                </blockquote>
______________________________<wbr>_________________<br>
                                                LLVM Developers mailing
                                                list<br>
                                                <a
                                                  moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
                                                <a
                                                  moz-do-not-send="true"
href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
                                                  rel="noreferrer"
                                                  target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
                                              </blockquote>
                                              <br>
                                            </div>
                                          </div>
                                          <span
                                            class="gmail-m_607283191610384526m_4344742898765767199HOEnZb"><font
                                              color="#888888"> -- <br>
                                              Hal Finkel<br>
                                              Lead, Compiler Technology
                                              and Programming Languages<br>
                                              Leadership Computing
                                              Facility<br>
                                              Argonne National
                                              Laboratory</font></span>
                                          <div
                                            class="gmail-m_607283191610384526m_4344742898765767199HOEnZb">
                                            <div
                                              class="gmail-m_607283191610384526m_4344742898765767199h5"><br>
                                              <br>
______________________________<wbr>_________________<br>
                                              LLVM Developers mailing
                                              list<br>
                                              <a moz-do-not-send="true"
href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
                                              <a moz-do-not-send="true"
href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
                                                rel="noreferrer"
                                                target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
                                            </div>
                                          </div>
                                        </blockquote>
                                      </div>
                                      <br>
                                    </div>
                                  </blockquote>
                                  <br>
                                  <pre class="gmail-m_607283191610384526m_4344742898765767199moz-signature" cols="72">-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
                                </div>
                              </div>
                            </div>
                          </blockquote>
                        </div>
                        <br>
                      </div>
                    </blockquote>
                    <br>
                    <pre class="gmail-m_607283191610384526moz-signature" cols="72">-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
                  </div>
                </div>
              </div>
            </blockquote>
          </div>
          <br>
        </div>
      </div>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
  </body>
</html>