<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 15, 2016 at 2:08 PM, Mehdi AMINI <span dir="ltr"><<a href="mailto:mehdi.amini@apple.com" target="_blank">mehdi.amini@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">mehdi_amini added a comment.<br>
<br>
I really don't like the fact that the PGO pipeline will be different from the non-PGO pipeline (other than what is required for instrumentations). I wonder what other people will think of that.<br></blockquote><div><br></div><div><br></div><div>See discussions in the original RFC. The pre-cleanup is the basic requirement to reduce the amount of instrumentation needed for low runtime overhead. It also improves the quality of the profile data due to the split contexts.  This is in fact one of biggest strengths of IR PGO compared with FE PGO is the ability to do so.  On the other hand, if this change helps performance for non-PGO case, we can probably consider it for O3 but that is a different topic to discuss.</div><div><br></div><div>thanks,</div><div><br></div><div>David</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
================<br>
Comment at: lib/Transforms/IPO/PassManagerBuilder.cpp:128<br>
@@ -121,1 +127,3 @@<br>
<span class="">+                      cl::desc("Disable pre-instrumentation inliner"));<br>
+<br>
 PassManagerBuilder::PassManagerBuilder() {<br>
</span>----------------<br>
Why two options?<br>
<br>
================<br>
Comment at: lib/Transforms/IPO/PassManagerBuilder.cpp:228<br>
@@ +227,3 @@<br>
<span class="">+  return 75;<br>
+}<br>
+<br>
</span>----------------<br>
These seem pretty arbitrary numbers?<br>
<br>
================<br>
Comment at: lib/Transforms/IPO/PassManagerBuilder.cpp:245<br>
@@ -214,1 +244,3 @@<br>
<span class="">+    addExtensionsToPM(EP_Peephole, MPM);<br>
+  }<br>
   if (!PGOInstrGen.empty()) {<br>
</span>----------------<br>
Where is this list coming from? How is it computed?<br>
<br>
<br>
<a href="http://reviews.llvm.org/D21405" rel="noreferrer" target="_blank">http://reviews.llvm.org/D21405</a><br>
<br>
<br>
<br>
</blockquote></div><br></div></div>