<div dir="ltr">I'm also generally fine with this, if we are fine with destroying later if  we rewrite this all :)<br><br></div><br><div class="gmail_quote">On Sun Jan 25 2015 at 7:29:28 AM <a href="mailto:hfinkel@anl.gov">hfinkel@anl.gov</a> <<a href="mailto:hfinkel@anl.gov">hfinkel@anl.gov</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Generally speaking, I'm in favor of this. We only loose in the case where the loop trip count is (very) small and the additional load is on a relatively-hot path through the loop. However, I think we can use BPI to filter out such cases.<br>
<br>
> It's worth mentioning that the 'merge block' concept is essentially a specialized form of jump threading. In fact, running '-jump-threading' does help in the loop cases I've looked at. However, running jump threading also inhibits some optimizations currently performed by LoadPRE. If we have a merge point where both inputs are unavailable, PRE will currently insert a single load at the merge. Running jump threading breaks this. Keeping that case working as it does today is why we only look through merge blocks with a single unavailable predeccesor in the patch.<br>
<br>
<br>
As a side comment, do we have a regression test covering this behavior? I believe this is a case where it is appropriate to have a regression test that runs opt -O3 (to get the default optimization pipeline), to make sure we don't disturb this current behavior. If we don't, can you please add one?<br>
<br>
<br>
================<br>
Comment at: lib/Transforms/Scalar/GVN.cpp:<u></u>1524<br>
@@ +1523,3 @@<br>
+/// reload)<br>
+static bool isLICMLike(BasicBlock* Header,<br>
+                       SmallVector<BasicBlock *, 4>& PredBlocks,<br>
----------------<br>
Thoughts on whether or not it is worthwhile to use getAnalysisIfAvailable<<u></u>LoopInfo> for this kind of thing instead?<br>
<br>
<a href="http://reviews.llvm.org/D7061" target="_blank">http://reviews.llvm.org/D7061</a><br>
<br>
EMAIL PREFERENCES<br>
  <a href="http://reviews.llvm.org/settings/panel/emailpreferences/" target="_blank">http://reviews.llvm.org/<u></u>settings/panel/<u></u>emailpreferences/</a><br>
<br>
<br>
</blockquote></div>