diff options
Diffstat (limited to 'llvm/lib/Transforms/Scalar/JumpThreading.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/JumpThreading.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Scalar/JumpThreading.cpp b/llvm/lib/Transforms/Scalar/JumpThreading.cpp index d68dd140a80..7495baab1d9 100644 --- a/llvm/lib/Transforms/Scalar/JumpThreading.cpp +++ b/llvm/lib/Transforms/Scalar/JumpThreading.cpp @@ -928,10 +928,11 @@ bool JumpThreading::ProcessImpliedCondition(BasicBlock *BB) { if (!PBI || !PBI->isConditional() || PBI->getSuccessor(0) != CurrentBB) return false; - bool ImpliedTrue; - if (isImpliedCondition(PBI->getCondition(), Cond, ImpliedTrue, DL)) { - BI->getSuccessor(ImpliedTrue ? 1 : 0)->removePredecessor(BB); - BranchInst::Create(BI->getSuccessor(ImpliedTrue ? 0 : 1), BI); + Optional<bool> Implication = + isImpliedCondition(PBI->getCondition(), Cond, DL); + if (Implication) { + BI->getSuccessor(*Implication ? 1 : 0)->removePredecessor(BB); + BranchInst::Create(BI->getSuccessor(*Implication ? 0 : 1), BI); BI->eraseFromParent(); return true; } |