[llvm-commits] [llvm] r62561 - in /llvm/trunk: lib/Transforms/Utils/SimplifyCFG.cpp test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll
Chris Lattner
sabre at nondot.org
Mon Jan 19 17:15:41 PST 2009
Author: lattner
Date: Mon Jan 19 19:15:41 2009
New Revision: 62561
URL: http://llvm.org/viewvc/llvm-project?rev=62561&view=rev
Log:
another fix for PR3354
Modified:
llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
llvm/trunk/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll
Modified: llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp?rev=62561&r1=62560&r2=62561&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/SimplifyCFG.cpp Mon Jan 19 19:15:41 2009
@@ -1559,6 +1559,11 @@
// fold the conditions into logical ops and one cond br.
if (&BB->front() != BI)
return false;
+
+
+ if (ConstantExpr *CE = dyn_cast<ConstantExpr>(BI->getCondition()))
+ if (CE->canTrap())
+ return false;
int PBIOp, BIOp;
if (PBI->getSuccessor(0) == BI->getSuccessor(0))
Modified: llvm/trunk/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll?rev=62561&r1=62560&r2=62561&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll (original)
+++ llvm/trunk/test/Transforms/SimplifyCFG/2009-01-19-UnconditionalTrappingConstantExpr.ll Mon Jan 19 19:15:41 2009
@@ -1,4 +1,4 @@
-; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | grep {br i1 } | count 2
+; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | grep {br i1 } | count 4
; PR3354
; Do not merge bb1 into the entry block, it might trap.
@@ -18,3 +18,14 @@
unwind
}
+define i32 @test2(i32 %tmp21, i32 %tmp24, i1 %tmp34) {
+ br i1 %tmp34, label %bb5, label %bb6
+
+bb5: ; preds = %bb4
+ br i1 icmp sgt (i32 sdiv (i32 32767, i32 0), i32 0), label %bb6, label %bb7
+bb6:
+ ret i32 42
+bb7:
+ unwind
+}
+
More information about the llvm-commits
mailing list