<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><br>
</p>
<div class="moz-cite-prefix">On 3/4/19 7:08 PM, Alina Sbirlea via llvm-dev wrote:<br>
</div>
<blockquote type="cite" cite="mid:CAHk2dbrnDG9ZB3sFP3ADfgbYgyH0nu_qhcgJM7vMPGODDYeWhg@mail.gmail.com">
<div dir="ltr">
<div dir="ltr">TL;DR: I'm looking to have AliasAnalysis passes have the ability keep a temporary cache when no transformations are performed.</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">
<div><span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px">I'm interested to first and foremost clarify what is the
 best way to even start such an infrastructure change, such that it is not abused (or even available) by other passes. We certainly don't want to keep arbitrary caches in all passes. </span></div>
<div><span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px">Would making this a feature used exclusively by MemorySSA
 make sense?</span></div>
<div><span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px">Only from other Analysis? </span></div>
<div><br>
</div>
<div>The usecases I have stem from BasicAA and TBAA being used to build MemorySSA. <br>
</div>
<div>MemorySSA is essentially a cache itself, and we're building it with a stateless tool.</div>
<div>We know that while building MemorySSA, there are no changes in the program, and yet, there is info that is computed again and again.</div>
<div><br>
</div>
<div>One example is this patch: <a href="https://reviews.llvm.org/D57627" moz-do-not-send="true">D57627</a>. The patch adds a cache for <span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px">PointerMayBeCaptured,
 which is cleared after every alias() call, in order to keep BasicAA stateless. In the example given in the patch, not clearing the isCapturedCache reduces compile times by another second. In some pathological cases I'm looking at, not-clearing this cache halves
 compile times (from 8s to 4s).</span></div>
<div><font face="Segoe UI, Segoe UI Emoji, Segoe UI Symbol,
              Lato, Helvetica Neue, Helvetica, Arial, sans-serif" color="#000000">There are a few other examples such as TBAA's</font> getLeastCommonType and BasicAA's DecomposeGEP.</div>
<div><span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px"><br>
</span></div>
<div><font face="Segoe UI, Segoe UI Emoji, Segoe UI Symbol,
              Lato, Helvetica Neue, Helvetica, Arial, sans-serif" color="#000000">Ideally we'd would have something along the lines of:</font></div>
<div><font face="Segoe UI, Segoe UI Emoji, Segoe UI Symbol,
              Lato, Helvetica Neue, Helvetica, Arial, sans-serif" color="#000000">void keepCaches()</font></div>
<div><font face="Segoe UI, Segoe UI Emoji, Segoe UI Symbol,
              Lato, Helvetica Neue, Helvetica, Arial, sans-serif" color="#000000">void clearCaches(),</font></div>
<div><font face="Segoe UI, Segoe UI Emoji, Segoe UI Symbol,
              Lato, Helvetica Neue, Helvetica, Arial, sans-serif" color="#000000">with the first one called just before building MemorySSA, and the second one called afterwards.</font></div>
<div><font face="Segoe UI, Segoe UI Emoji, Segoe UI Symbol,
              Lato, Helvetica Neue, Helvetica, Arial, sans-serif" color="#000000"><br>
</font></div>
<div><font face="Segoe UI, Segoe UI Emoji, Segoe UI Symbol,
              Lato, Helvetica Neue, Helvetica, Arial, sans-serif" color="#000000">Again, I'm looking into how to make this available but also contain the lifespan of these internal caches to only
 "as long as it takes for this other analysis pass to be built".</font></div>
</div>
</div>
</blockquote>
<p><br>
</p>
<p>Why then? Isn't the information valid so long as the IR is not mutated?</p>
<p> -Hal<br>
</p>
<p><br>
</p>
<blockquote type="cite" cite="mid:CAHk2dbrnDG9ZB3sFP3ADfgbYgyH0nu_qhcgJM7vMPGODDYeWhg@mail.gmail.com">
<div dir="ltr">
<div dir="ltr">
<div><span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px"><br>
</span></div>
<div><font face="Segoe UI, Segoe UI Emoji, Segoe UI Symbol,
              Lato, Helvetica Neue, Helvetica, Arial, sans-serif" color="#000000">Suggestions and feedback are most welcome!</font></div>
<div><span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px"><br>
</span></div>
<div><span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px">Thanks,</span></div>
<div><span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px">Alina</span></div>
<div><span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px"><br>
</span></div>
<div><span style="color:rgb(0,0,0);font-family:"Segoe
              UI","Segoe UI Emoji","Segoe UI
              Symbol",Lato,"Helvetica
              Neue",Helvetica,Arial,sans-serif;font-size:13px"><br>
</span></div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>
<a class="moz-txt-link-freetext" href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
<pre class="moz-signature" cols="72">-- 
Hal Finkel
Lead, Compiler Technology and Programming Languages
Leadership Computing Facility
Argonne National Laboratory</pre>
</body>
</html>