<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">LGTM. <div><br><div><div>On May 24, 2013, at 11:09 AM, Benjamin Kramer <<a href="mailto:benny.kra@gmail.com">benny.kra@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br>On 24.05.2013, at 20:05, Benjamin Kramer <<a href="mailto:benny.kra@googlemail.com">benny.kra@googlemail.com</a>> wrote:<br><br><blockquote type="cite">Author: d0k<br>Date: Fri May 24 13:05:35 2013<br>New Revision: 182656<br><br>URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project?rev=182656&view=rev">http://llvm.org/viewvc/llvm-project?rev=182656&view=rev</a><br>Log:<br>LoopVectorize: LoopSimplify can't canonicalize loops with an indirectbr in it, don't assert on those cases.<br><br>Fixes PR16139.<br></blockquote><br>This unbreaks compiling erlang at -O3, making it a good candidate for 3.3.<br><br>- Ben<br><br><blockquote type="cite"><br>Modified:<br>  llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp<br>  llvm/trunk/test/Transforms/LoopVectorize/lcssa-crash.ll<br><br>Modified: llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp<br>URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp?rev=182656&r1=182655&r2=182656&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp?rev=182656&r1=182655&r2=182656&view=diff</a><br>==============================================================================<br>--- llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp (original)<br>+++ llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp Fri May 24 13:05:35 2013<br>@@ -2428,7 +2428,10 @@ bool LoopVectorizationLegality::canVecto<br>}<br><br>bool LoopVectorizationLegality::canVectorize() {<br>-  assert(TheLoop->getLoopPreheader() && "No preheader!!");<br>+  // We must have a loop in canonical form. Loops with indirectbr in them cannot<br>+  // be canonicalized.<br>+  if (!TheLoop->getLoopPreheader())<br>+    return false;<br><br> // We can only vectorize innermost loops.<br> if (TheLoop->getSubLoopsVector().size())<br><br>Modified: llvm/trunk/test/Transforms/LoopVectorize/lcssa-crash.ll<br>URL:<span class="Apple-converted-space"> </span><a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/lcssa-crash.ll?rev=182656&r1=182655&r2=182656&view=diff">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/LoopVectorize/lcssa-crash.ll?rev=182656&r1=182655&r2=182656&view=diff</a><br>==============================================================================<br>--- llvm/trunk/test/Transforms/LoopVectorize/lcssa-crash.ll (original)<br>+++ llvm/trunk/test/Transforms/LoopVectorize/lcssa-crash.ll Fri May 24 13:05:35 2013<br>@@ -27,3 +27,14 @@ for.end.i.i.i:<br> unreachable<br>}<br><br>+; PR16139<br>+define void @test2(i8* %x) {<br>+entry:<br>+  indirectbr i8* %x, [ label %L0, label %L1 ]<br>+<br>+L0:<br>+  br label %L0<br>+<br>+L1:<br>+  ret void<br>+}<br><br><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">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a></blockquote></div></blockquote></div><br></div></body></html>