diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2020-07-31 22:23:32 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2020-07-31 22:23:32 +0000 |
| commit | 979e22ff1ac2a50acbf94e28576a058db89003b5 (patch) | |
| tree | f9ebe42670b788a1aed8dd616ec64fd518115aa9 /contrib/llvm-project/llvm/lib/Transforms/Scalar/JumpThreading.cpp | |
| parent | 590d96feea75246dee213cb528930df8f6234b87 (diff) | |
| parent | 899468a0006db4146d9b229234a183f499f7bcd2 (diff) | |
Notes
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Transforms/Scalar/JumpThreading.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Transforms/Scalar/JumpThreading.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/contrib/llvm-project/llvm/lib/Transforms/Scalar/JumpThreading.cpp b/contrib/llvm-project/llvm/lib/Transforms/Scalar/JumpThreading.cpp index 9d0500419a7f..2f379b7f6160 100644 --- a/contrib/llvm-project/llvm/lib/Transforms/Scalar/JumpThreading.cpp +++ b/contrib/llvm-project/llvm/lib/Transforms/Scalar/JumpThreading.cpp @@ -1859,6 +1859,14 @@ bool JumpThreadingPass::ProcessBranchOnXOR(BinaryOperator *BO) { return true; } + // If any of predecessors end with an indirect goto, we can't change its + // destination. Same for CallBr. + if (any_of(BlocksToFoldInto, [](BasicBlock *Pred) { + return isa<IndirectBrInst>(Pred->getTerminator()) || + isa<CallBrInst>(Pred->getTerminator()); + })) + return false; + // Try to duplicate BB into PredBB. return DuplicateCondBranchOnPHIIntoPred(BB, BlocksToFoldInto); } |
