<div dir="ltr">What Philip said.<div><br></div><div>Also, it is possible to help with the pass manager work by porting individual passes over. There are a number of commits that serve as good examples here.</div></div><br><div class="gmail_quote"><div dir="ltr">On Mon, Mar 21, 2016 at 6:22 PM Philip Reames via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@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 text="#000000" bgcolor="#FFFFFF">
FYI - There is currently an architectural issue which prevents the
SCC pass manager (which runs the inliner) from relying on Function
or Loop analysis passes. This is the primary motivation of the pass
manager rewrite that Chandler Carruth has been working on for the
last two years. He's getting relatively close to that project being
done, but until then you are going to be effectively blocked on
this. <br></div><div text="#000000" bgcolor="#FFFFFF">
<br>
Philip</div><div text="#000000" bgcolor="#FFFFFF"><br>
<br>
<div>On 03/21/2016 11:56 AM, Aditya K via
llvm-dev wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">Hi,
<div>It seems inliner does not take into account if a call is
inside a loop. I'm trying to figure out if loop-info can be
made available to the inliner.</div>
<div><br>
</div>
<div>When I try to add LoopInfoWrapperPass to Inliner.cpp,</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div>diff --git a/llvm/lib/Transforms/IPO/Inliner.cpp
b/llvm/lib/Transforms/IPO/Inliner.cpp</div>
<div>index 568707d..cb51ea8 100644</div>
<div>--- a/llvm/lib/Transforms/IPO/Inliner.cpp</div>
<div>+++ b/llvm/lib/Transforms/IPO/Inliner.cpp</div>
<div>@@ -14,6 +14,7 @@</div>
<div> //===----------------------------------------------------------------------===//</div>
<div><br>
</div>
<div> #include "llvm/Transforms/IPO/InlinerPass.h"</div>
<div>+#include "llvm/Analysis/LoopInfo.h"</div>
<div> #include "llvm/ADT/SmallPtrSet.h"</div>
<div> #include "llvm/ADT/Statistic.h"</div>
<div> #include "llvm/Analysis/AliasAnalysis.h"</div>
<div>@@ -58,6 +59,7 @@ Inliner::Inliner(char &ID, bool
InsertLifetime)</div>
<div> void Inliner::getAnalysisUsage(AnalysisUsage &AU)
const {</div>
<div> AU.addRequired<AssumptionCacheTracker>();</div>
<div> AU.addRequired<TargetLibraryInfoWrapperPass>();</div>
<div>+ AU.addRequired<LoopInfoWrapperPass>();</div>
<div> getAAResultsAnalysisUsage(AU);</div>
<div> CallGraphSCCPass::getAnalysisUsage(AU);</div>
</div>
<div>}</div>
<div><br>
</div>
<div>I get llvm_unreachable in `<span style="font-size:12pt">void
PMDataManager::addLowerLevelRequiredPass(Pass *P, Pass
*RequiredPass)'</span></div>
<div><span style="font-size:12pt"><br>
</span></div>
<div><span style="font-size:12pt">Thanks,</span></div>
<div>-Aditya</div>
</div>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a>
</pre>
</blockquote>
<br>
</div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>