<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 15, 2016 at 3:09 PM, Sean Silva <span dir="ltr"><<a href="mailto:chisophugis@gmail.com" target="_blank">chisophugis@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">silvas added a comment.<br>
<span><br>
In <a href="http://reviews.llvm.org/D21405#459242" rel="noreferrer" target="_blank">http://reviews.llvm.org/D21405#459242</a>, @mehdi_amini wrote:<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>
<br>
<br>
</span>This was one of my initial concerns too: <a href="http://lists.llvm.org/pipermail/llvm-dev/2015-August/089058.html" rel="noreferrer" target="_blank">http://lists.llvm.org/pipermail/llvm-dev/2015-August/089058.html</a><br>
Jake and I (actually mostly Jake) did some basic measurements related to this and did not find any significant difference.<br>
<br>
Rong also did some measurements related to this in the initial RFC thread: <a href="http://lists.llvm.org/pipermail/llvm-dev/2015-August/089425.html" rel="noreferrer" target="_blank">http://lists.llvm.org/pipermail/llvm-dev/2015-August/089425.html</a><br>
<br>
I agree though: generally speaking, we should avoid running too many passes before instrumentation precisely because they cause divergence between the PGO and non-PGO pipelines</blockquote><div><br></div><div><br></div><div>I agree that we should limit the difference to the minimal required, but keeping two completely different compilation modes (e.g. PGO vs nonPGO, O3 vs O2 etc) pipeline identical should be a non-goal.</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">. Thankfully Jake and I found that on our games only pre-inlining was needed (running other optimizations before instrumentation did not help significantly for our test cases beyond the benefit of just pre-inlining).<br>
<br>
(note: due to PR27299, a run of simplifycfg after inlining is needed. But this run of simplifycfg doesn't really affect the performance of the instrumented build at all)<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>