diff options
author | Bill Wendling <isanbard@gmail.com> | 2020-02-20 16:22:35 -0800 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2020-02-20 16:24:42 -0800 |
commit | 2fe457690da0fc38bc7f9f1d0aee2ba6a6a16ada (patch) | |
tree | 93dc0634556d26cdcfbb26db6e07211bcf335c9a /llvm/lib/Transforms/Utils/BasicBlockUtils.cpp | |
parent | d4ded05ba851304b26a437896bc3962ef56f62cb (diff) | |
download | llvm-2fe457690da0fc38bc7f9f1d0aee2ba6a6a16ada.zip llvm-2fe457690da0fc38bc7f9f1d0aee2ba6a6a16ada.tar.gz llvm-2fe457690da0fc38bc7f9f1d0aee2ba6a6a16ada.tar.bz2 |
Filter callbr insts from critical edge splitting
Similarly to how splitting predecessors with an indirectbr isn't handled
in the generic way, we also shouldn't split callbrs, for similar
reasons.
Diffstat (limited to 'llvm/lib/Transforms/Utils/BasicBlockUtils.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/BasicBlockUtils.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp index 19b926d..4ae94ce 100644 --- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp +++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp @@ -506,7 +506,8 @@ llvm::SplitAllCriticalEdges(Function &F, unsigned NumBroken = 0; for (BasicBlock &BB : F) { Instruction *TI = BB.getTerminator(); - if (TI->getNumSuccessors() > 1 && !isa<IndirectBrInst>(TI)) + if (TI->getNumSuccessors() > 1 && !isa<IndirectBrInst>(TI) && + !isa<CallBrInst>(TI)) for (unsigned i = 0, e = TI->getNumSuccessors(); i != e; ++i) if (SplitCriticalEdge(TI, i, Options)) ++NumBroken; |