another fix for PR3354

llvm-svn: 62561
This commit is contained in:
Chris Lattner 2009-01-20 01:15:41 +00:00
parent 7663e08915
commit 6ade48fcaa
2 changed files with 17 additions and 1 deletions

View File

@ -1559,6 +1559,11 @@ static bool SimplifyCondBranchToCondBranch(BranchInst *PBI, BranchInst *BI) {
// 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))

View File

@ -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 @@ bb6:
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
}