<div dir="ltr">I would prefer to have some clean up to reduce the number of instrumentation. Performance is one of the many thing that we interested. Profile size and binary size also matters. Having the dead code in the IR (i.e. unnreachable from any bb) can be a problem in current IR instrumentation implemenation. </div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jun 15, 2016 at 3:16 PM, Xinliang David Li <span dir="ltr"><<a href="mailto:davidxl@google.com" target="_blank">davidxl@google.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"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">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></span><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><span class="HOEnZb"><font color="#888888"><div><br></div><div>David</div></font></span><span class=""><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></span></div><br></div></div>
</blockquote></div><br></div>