<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    This was discussed a while back in the thread titled "alias set
    collapse and LICM".  <br>
    <br>
    Philip<br>
    <br>
    <div class="moz-cite-prefix">On 07/28/2015 06:13 AM, Andrew Zhogin
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAADCEiZTsZdbChjZ4WL8KAy43PzP6g1ZpdEbw91wVcc3z1L8gA@mail.gmail.com"
      type="cite">
      <div dir="ltr">Hi all,
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap"><br>
          </span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">There
            is a problem about how AliasSetTracker merging AliasSet's
            when meet UnknownInst.</span><br>
        </div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap"><br>
          </span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">When
            adding new pointer it looks for existing AliasSet's aliased
            with new pointer. And merging them together. It is ok for
            pointers: if %A mayalias %B and %B mayalias %C then %A
            mayalias %C.</span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap"><br>
          </span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">But
            the same logic when adding callsite is wrong (</span><font
            color="#000000" size="3"><span style="white-space:pre-wrap">findAliasSetForUnknownInst)</span></font><span
style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">.</span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap"><br>
          </span></div>
        <div><font color="#000000" size="3"><span
              style="white-space:pre-wrap">Callsite may be known to
              readonly access one pointer and change the content of
              other pointer.</span></font></div>
        <div><font color="#000000" size="3"><span
              style="white-space:pre-wrap">Why to merge together two
              noalias pointers if they have some mod/ref relationships
              with common callsite?</span></font></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap"><br>
          </span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">If
            modrefinfo(%A, %call1) == REF and modrefinfo(%B, %call1) ==
            MOD</span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">
            it doesn't mean %A may/must alias %B.</span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">AliasSet's
            for %A and %B must stay independent with corrected access
            lattice: aliasset(%A).Access |= RefAccess,
            aliasset(%B).Access |= ModAccess.</span></div>
        <div>And I think new <span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">UnknownInst
            must be added to both AliasSet's.</span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap"><br>
          </span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">Or
            maybe </span><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">UnknownInst's
            must be collected in central part - AliasSetTracker, not
            AliasSet's.</span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap"><br>
          </span></div>
        <div><span
            style="color:rgb(0,0,0);font-size:medium;white-space:pre-wrap">Am
            I right?</span></div>
        <div>
          <div><br>
          </div>
          -- <br>
          <div class="gmail_signature">Best regards,</div>
          <div class="gmail_signature">Andrew Zhogin</div>
          <div class="gmail_signature"><br>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a class="moz-txt-link-freetext" href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>