mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-02 07:11:49 +00:00
fix PR6743, a case where we'd delete an instruction before using it
in some cases. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100937 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a2fb234b04
commit
6f285d2105
@ -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
Block a user