<div dir="ltr">Looks good, thanks!</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 23, 2016 at 9:22 PM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@gmail.com" target="_blank">chandlerc@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><div class="h5"><div dir="ltr">On Fri, Dec 23, 2016 at 6:44 PM Sean Silva via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_6592798155195462973gmail_msg"><div class="gmail_extra m_6592798155195462973gmail_msg"><div class="gmail_quote m_6592798155195462973gmail_msg">On Fri, Dec 23, 2016 at 12:38 PM, Chandler Carruth via llvm-commits <span dir="ltr" class="m_6592798155195462973gmail_msg"><<a href="mailto:llvm-commits@lists.llvm.org" class="m_6592798155195462973gmail_msg" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br class="m_6592798155195462973gmail_msg"><blockquote class="gmail_quote m_6592798155195462973gmail_msg" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: chandlerc<br class="m_6592798155195462973gmail_msg">
Date: Fri Dec 23 14:38:19 2016<br class="m_6592798155195462973gmail_msg">
New Revision: 290449<br class="m_6592798155195462973gmail_msg">
<br class="m_6592798155195462973gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=290449&view=rev" rel="noreferrer" class="m_6592798155195462973gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=290449&view=rev</a><br class="m_6592798155195462973gmail_msg">
Log:<br class="m_6592798155195462973gmail_msg">
[PM] Add support for building a default AA pipeline to the PassBuilder.<br class="m_6592798155195462973gmail_msg">
<br class="m_6592798155195462973gmail_msg">
Pretty boring and lame as-is but necessary. This is definitely a place<br class="m_6592798155195462973gmail_msg">
we'll end up with extension hooks longer term. =]<br class="m_6592798155195462973gmail_msg">
<br class="m_6592798155195462973gmail_msg">
Differential Revision: <a href="https://reviews.llvm.org/D28076" rel="noreferrer" class="m_6592798155195462973gmail_msg" target="_blank">https://reviews.llvm.org/<wbr>D28076</a><br class="m_6592798155195462973gmail_msg">
<br class="m_6592798155195462973gmail_msg">
Modified:<br class="m_6592798155195462973gmail_msg">
    llvm/trunk/include/llvm/<wbr>Passes/PassBuilder.h<br class="m_6592798155195462973gmail_msg">
    llvm/trunk/lib/Passes/<wbr>PassBuilder.cpp<br class="m_6592798155195462973gmail_msg">
    llvm/trunk/test/Other/new-<wbr>pass-manager.ll<br class="m_6592798155195462973gmail_msg">
<br class="m_6592798155195462973gmail_msg">
Modified: llvm/trunk/include/llvm/<wbr>Passes/PassBuilder.h<br class="m_6592798155195462973gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Passes/PassBuilder.h?rev=290449&r1=290448&r2=290449&view=diff" rel="noreferrer" class="m_6592798155195462973gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/include/<wbr>llvm/Passes/PassBuilder.h?rev=<wbr>290449&r1=290448&r2=290449&<wbr>view=diff</a><br class="m_6592798155195462973gmail_msg">
==============================<wbr>==============================<wbr>==================<br class="m_6592798155195462973gmail_msg">
--- llvm/trunk/include/llvm/<wbr>Passes/PassBuilder.h (original)<br class="m_6592798155195462973gmail_msg">
+++ llvm/trunk/include/llvm/<wbr>Passes/PassBuilder.h Fri Dec 23 14:38:19 2016<br class="m_6592798155195462973gmail_msg">
@@ -224,6 +224,10 @@ public:<br class="m_6592798155195462973gmail_msg">
   ModulePassManager buildLTODefaultPipeline(<wbr>OptimizationLevel Level,<br class="m_6592798155195462973gmail_msg">
                                             bool DebugLogging = false);<br class="m_6592798155195462973gmail_msg">
<br class="m_6592798155195462973gmail_msg">
+  /// Build the default `AAManager` with the default alias analysis pipeline<br class="m_6592798155195462973gmail_msg">
+  /// registered.<br class="m_6592798155195462973gmail_msg">
+  AAManager buildDefaultAAPipeline();<br class="m_6592798155195462973gmail_msg">
+<br class="m_6592798155195462973gmail_msg">
   /// \brief Parse a textual pass pipeline description into a \c ModulePassManager.<br class="m_6592798155195462973gmail_msg">
   ///<br class="m_6592798155195462973gmail_msg">
   /// The format of the textual pass pipeline description looks something like:<br class="m_6592798155195462973gmail_msg">
<br class="m_6592798155195462973gmail_msg">
Modified: llvm/trunk/lib/Passes/<wbr>PassBuilder.cpp<br class="m_6592798155195462973gmail_msg">
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Passes/PassBuilder.cpp?rev=290449&r1=290448&r2=290449&view=diff" rel="noreferrer" class="m_6592798155195462973gmail_msg" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/Passes/<wbr>PassBuilder.cpp?rev=290449&r1=<wbr>290448&r2=290449&view=diff</a><br class="m_6592798155195462973gmail_msg">
==============================<wbr>==============================<wbr>==================<br class="m_6592798155195462973gmail_msg">
--- llvm/trunk/lib/Passes/<wbr>PassBuilder.cpp (original)<br class="m_6592798155195462973gmail_msg">
+++ llvm/trunk/lib/Passes/<wbr>PassBuilder.cpp Fri Dec 23 14:38:19 2016<br class="m_6592798155195462973gmail_msg">
@@ -544,6 +544,33 @@ ModulePassManager PassBuilder::buildLTOD<br class="m_6592798155195462973gmail_msg">
   return MPM;<br class="m_6592798155195462973gmail_msg">
 }<br class="m_6592798155195462973gmail_msg">
<br class="m_6592798155195462973gmail_msg">
+AAManager PassBuilder::<wbr>buildDefaultAAPipeline() {<br class="m_6592798155195462973gmail_msg">
+  AAManager AA;<br class="m_6592798155195462973gmail_msg">
+<br class="m_6592798155195462973gmail_msg">
+  // The order in which these are registered determines their priority when<br class="m_6592798155195462973gmail_msg">
+  // being queried.<br class="m_6592798155195462973gmail_msg">
+<br class="m_6592798155195462973gmail_msg">
+  // First we register the basic alias analysis that provides the majority of<br class="m_6592798155195462973gmail_msg">
+  // per-function local AA logic. This is a stateless, on-demand local set of<br class="m_6592798155195462973gmail_msg">
+  // AA techniques.<br class="m_6592798155195462973gmail_msg">
+  AA.registerFunctionAnalysis<<wbr>BasicAA>();<br class="m_6592798155195462973gmail_msg">
+<br class="m_6592798155195462973gmail_msg">
+  // Next we query fast, specialized alias analyses that wrap IR-embedded<br class="m_6592798155195462973gmail_msg">
+  // information about aliasing.<br class="m_6592798155195462973gmail_msg">
+  AA.registerFunctionAnalysis<<wbr>ScopedNoAliasAA>();<br class="m_6592798155195462973gmail_msg">
+  AA.registerFunctionAnalysis<<wbr>TypeBasedAA>();<br class="m_6592798155195462973gmail_msg">
+<br class="m_6592798155195462973gmail_msg">
+  // Add support for querying global aliasing information when available.<br class="m_6592798155195462973gmail_msg">
+  // Because this is a module analysis this will use any cached analysis state<br class="m_6592798155195462973gmail_msg">
+  // available but isn't enough to cause it to be available.<br class="m_6592798155195462973gmail_msg">
+  // FIXME: Enable once the invalidation logic supports this.<br class="m_6592798155195462973gmail_msg"></blockquote><div class="m_6592798155195462973gmail_msg"><br class="m_6592798155195462973gmail_msg"></div></div></div></div><div dir="ltr" class="m_6592798155195462973gmail_msg"><div class="gmail_extra m_6592798155195462973gmail_msg"><div class="gmail_quote m_6592798155195462973gmail_msg"><div class="m_6592798155195462973gmail_msg">This comment is confusing. It starts out talking about how to cause the analysis to be computed, but then the FIXME is about invalidation logic. Can you somehow make it clear that they are talking about two different things? (move the FIXME inside the `#if 0` maybe?).</div><div class="m_6592798155195462973gmail_msg"><br class="m_6592798155195462973gmail_msg"></div><div class="m_6592798155195462973gmail_msg">Also, for context about the "isn't enough to cause it to be available" aspect, you probably want to emphasize that AAManager is a function analysis and will access GlobalsAA through the proxy, which provides a read-only view of the module analysis manager.</div></div></div></div></blockquote><div><br></div></div></div><div>Thanks for reviewing! Attempted to do both in r290488, but if it still isn't working, just let me know.</div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-Chandler</div></font></span></div></div>
</blockquote></div><br></div>