<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 21, 2017 at 2:19 PM, Davide Italiano via Phabricator <span dir="ltr"><<a href="mailto:reviews@reviews.llvm.org" target="_blank">reviews@reviews.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">davide accepted this revision.<br>
davide added a comment.<br>
This revision is now accepted and ready to land.<br>
<br>
Yes, I was reducing the same. Some comments, but I had the same fix.<br>
Are you running with `-O3` or LTO? Where are you putting the inliner?<br>
<br></blockquote><div><br></div><div>O2, but with the following PM change. </div><div><br></div><div><br></div><div> Index: lib/Transforms/IPO/PassManagerBuilder.cpp</div><div>===================================================================</div><div>--- lib/Transforms/IPO/PassManagerBuilder.cpp   (revision 300947)</div><div>+++ lib/Transforms/IPO/PassManagerBuilder.cpp   (working copy)</div><div>@@ -465,6 +465,8 @@ void PassManagerBuilder::populateModuleP</div><div>     MPM.add(createCFGSimplificationPass()); // Clean up after IPCP & DAE</div><div>   }</div><div> </div><div>+  if (OptLevel > 1)</div><div>+    MPM.add(createPartialInliningPass());</div><div>   // For SamplePGO in ThinLTO compile phase, we do not want to do indirect</div><div>   // call promotion as it will change the CFG too much to make the 2nd</div><div>   // profile annotation in backend more difficult.</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
<br>
================<br>
Comment at: lib/Transforms/IPO/<wbr>PartialInlining.cpp:89<br>
<span class="gmail-">+  auto canAllUsesBeReplaced = [](Function *F) {<br>
+    std::vector<User *> Users(F->user_begin(), F->user_end());<br>
+    for (User *User : Users) {<br>
</span>----------------<br>
`SmallVector<>` maybe? (up to you)<br>
<br>
<br>
================<br>
Comment at: lib/Transforms/IPO/<wbr>PartialInlining.cpp:96-97<br>
<span class="gmail-">+        Callee = CallSite(II).<wbr>getCalledFunction();<br>
+      else<br>
+        return false;<br>
+      if (Callee != F)<br>
</span>----------------<br>
Is this bit needed?<br>
I assume the invariant `F != nullptr` should always hold, at which point if we don't set Callee, so `Callee != F` is always true and we return false.<br></blockquote><div><br></div><div>Right.</div><div><br></div><div>David <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Does it make sense to you?<br>
<br>
<br>
<a href="https://reviews.llvm.org/D32373" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D32373</a><br>
<br>
<br>
<br>
</blockquote></div><br></div></div>