<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Nov 20, 2014 at 1:39 PM, Chandler Carruth <span dir="ltr"><<a href="mailto:chandlerc@gmail.com" target="_blank">chandlerc@gmail.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"><div class="gmail_extra">The way in which this would impact the unroller is by uncovering more loops with a *constant* trip count that we can therefore fully unroll. This shouldn't be profile guided and is strict goodness.<br></div></div></blockquote><div><br></div><div>With profile info you'd probably want to treat all cold code as -Os, so if a constant-trip-count loop is cold you wouldn't unroll because of the code size bloat.</div><div><br></div><div>You're right about this patch exposing more opportunities for the unroller.  Accordingly, you unfortunately can't really undo its affect by tweaking thresholds which are applied on a loop-by-loop basis.  In order to claw back the code size expansion this causes, you'd have to limit the unrolling size threshold across all loops with unknown performance effects.</div><div><br></div><div>Mark</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"></div><div class="gmail_extra"><br></div><div class="gmail_extra">The problem is that fully unrolling loops is causing binary size growth. We don't want to stop unrolling loops fully when we can (it radically improves our ability to analyze the function). We should perhaps look at actually using the "loop re-rolling" pass more heavily, scheduling it along with the partial-unroll that happens very late in the pipeline to re-form loops out of very long, repetitive code sequences?</div></div>
<br>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br></blockquote></div><br></div></div>