forked from OSchip/llvm-project
fix PR6743, a case where we'd delete an instruction before using it
in some cases. llvm-svn: 100937
This commit is contained in:
parent
b9801ffcb5
commit
9ae28b141f
|
@ -670,8 +670,10 @@ bool JumpThreading::ProcessBranchOnDuplicateCond(BasicBlock *PredBB,
|
|||
Value *OldCond = DestBI->getCondition();
|
||||
DestBI->setCondition(ConstantInt::get(Type::getInt1Ty(BB->getContext()),
|
||||
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);
|
||||
ConstantFoldTerminator(BB);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -324,3 +324,20 @@ A: ; preds = %entry
|
|||
call void undef(i64 ptrtoint (i8* blockaddress(@test11, %A) to i64)) nounwind
|
||||
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
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue