[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