On Wed, Oct 3, 2012 at 4:59 PM, Jakub Staszak <span dir="ltr"><<a href="mailto:kubastaszak@gmail.com" target="_blank" class="cremed">kubastaszak@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: kuba<br>
Date: Wed Oct  3 18:59:47 2012<br>
New Revision: 165187<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=165187&view=rev" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project?rev=165187&view=rev</a><br>
Log:<br>
Fix PR13967.<br></blockquote><div><br></div><div>Please include a bit more details in the commit log. What was fixed? How? Why? etc....</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Modified:<br>
    llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp<br>
    llvm/trunk/test/Transforms/IndVarSimplify/crash.ll<br>
<br>
Modified: llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp?rev=165187&r1=165186&r2=165187&view=diff" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp?rev=165187&r1=165186&r2=165187&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp Wed Oct  3 18:59:47 2012<br>
@@ -1262,7 +1262,10 @@<br>
     return true;<br>
<br>
   // Do LFTR if the exit condition's IV is *not* a simple counter.<br>
-  Value *IncV = Phi->getIncomingValueForBlock(L->getLoopLatch());<br>
+  int Idx = Phi->getBasicBlockIndex(L->getLoopLatch());<br>
+  if (Idx < 0)<br>
+    return true;<br>
+  Value *IncV = Phi->getIncomingValue(Idx);<br>
   return Phi != getLoopPhiForCounter(IncV, L, DT);<br>
 }<br>
<br>
<br>
Modified: llvm/trunk/test/Transforms/IndVarSimplify/crash.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/crash.ll?rev=165187&r1=165186&r2=165187&view=diff" target="_blank" class="cremed">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/IndVarSimplify/crash.ll?rev=165187&r1=165186&r2=165187&view=diff</a><br>

==============================================================================<br>
--- llvm/trunk/test/Transforms/IndVarSimplify/crash.ll (original)<br>
+++ llvm/trunk/test/Transforms/IndVarSimplify/crash.ll Wed Oct  3 18:59:47 2012<br>
@@ -87,3 +87,29 @@<br>
 main.f.exit:                                      ; preds = %"3.i"<br>
   unreachable<br>
 }<br>
+<br>
+<br>
+; PR13967<br>
+<br>
+define void @f() nounwind ssp {<br>
+bb:<br>
+  br label %bb4<br>
+<br>
+bb4:<br>
+  %tmp = phi i64 [ %tmp5, %bb7 ], [ undef, %bb ]<br>
+  %tmp5 = add nsw i64 %tmp, 1<br>
+  %extract.t1 = trunc i64 %tmp5 to i32<br>
+  br i1 false, label %bb6, label %bb7<br>
+<br>
+bb6:<br>
+  br label %bb7<br>
+<br>
+bb7:<br>
+  %.off0 = phi i32 [ undef, %bb6 ], [ %extract.t1, %bb4 ]<br>
+  %tmp8 = icmp eq i32 %.off0, 0<br>
+  br i1 %tmp8, label %bb9, label %bb4<br>
+<br>
+bb9:<br>
+  ret void<br>
+}<br>
+<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" class="cremed">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank" class="cremed">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>