Skip to content
Snippets Groups Projects
Commit 9ae28b14 authored by Chris Lattner's avatar Chris Lattner
Browse files

fix PR6743, a case where we'd delete an instruction before using it

in some cases.

llvm-svn: 100937
parent b9801ffc
No related branches found
No related tags found
No related merge requests found
...@@ -670,8 +670,10 @@ bool JumpThreading::ProcessBranchOnDuplicateCond(BasicBlock *PredBB, ...@@ -670,8 +670,10 @@ bool JumpThreading::ProcessBranchOnDuplicateCond(BasicBlock *PredBB,
Value *OldCond = DestBI->getCondition(); Value *OldCond = DestBI->getCondition();
DestBI->setCondition(ConstantInt::get(Type::getInt1Ty(BB->getContext()), DestBI->setCondition(ConstantInt::get(Type::getInt1Ty(BB->getContext()),
BranchDir)); BranchDir));
ConstantFoldTerminator(BB); // Delete dead instructions before we fold the branch. Folding the branch
// can eliminate edges from the CFG which can end up deleting OldCond.
RecursivelyDeleteTriviallyDeadInstructions(OldCond); RecursivelyDeleteTriviallyDeadInstructions(OldCond);
ConstantFoldTerminator(BB);
return true; return true;
} }
......
...@@ -324,3 +324,20 @@ A: ; preds = %entry ...@@ -324,3 +324,20 @@ A: ; preds = %entry
call void undef(i64 ptrtoint (i8* blockaddress(@test11, %A) to i64)) nounwind call void undef(i64 ptrtoint (i8* blockaddress(@test11, %A) to i64)) nounwind
unreachable unreachable
} }
; PR6743
define void @test12() nounwind ssp {
entry:
br label %lbl_51
lbl_51: ; preds = %if.then, %entry
%tmp3 = phi i1 [ false, %if.then ], [ undef, %entry ] ; <i1> [#uses=2]
br i1 %tmp3, label %if.end12, label %if.then
if.then: ; preds = %lbl_51
br i1 %tmp3, label %lbl_51, label %if.end12
if.end12: ; preds = %if.then, %lbl_51
ret void
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment