diff options
author | Sanjay Patel <spatel@rotateright.com> | 2021-08-19 08:43:51 -0400 |
---|---|---|
committer | Sanjay Patel <spatel@rotateright.com> | 2021-08-19 08:43:51 -0400 |
commit | ec54e275f56cc042eb9c25acd76bff18b9ea8092 (patch) | |
tree | 659470bb2250d1ca738bc23f9c1ce232b5fcc444 /llvm/lib/Transforms/Utils/Local.cpp | |
parent | eee0ded3371f549ba6df045c0348e8e32d576df9 (diff) | |
download | llvm-ec54e275f56cc042eb9c25acd76bff18b9ea8092.zip llvm-ec54e275f56cc042eb9c25acd76bff18b9ea8092.tar.gz llvm-ec54e275f56cc042eb9c25acd76bff18b9ea8092.tar.bz2 |
Revert "[CVP] processSwitch: Remove default case when switch cover all possible values."
This reverts commit 9934a5b2ed5aa6e6bbb2e55c3cd98839722c226e.
This patch may cause miscompiles because it missed a constraint
as shown in the examples from:
https://llvm.org/PR51531
Diffstat (limited to 'llvm/lib/Transforms/Utils/Local.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/Local.cpp | 24 |
1 files changed, 0 insertions, 24 deletions
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index 862e3c3..3d6ffde 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -2182,30 +2182,6 @@ void llvm::changeToCall(InvokeInst *II, DomTreeUpdater *DTU) { DTU->applyUpdates({{DominatorTree::Delete, BB, UnwindDestBB}}); } -void llvm::createUnreachableSwitchDefault(SwitchInst *Switch, - DomTreeUpdater *DTU) { - LLVM_DEBUG(dbgs() << "Switch default is dead.\n"); - auto *BB = Switch->getParent(); - BasicBlock *NewDefaultBlock = SplitBlockPredecessors( - Switch->getDefaultDest(), Switch->getParent(), "", DTU); - auto *OrigDefaultBlock = Switch->getDefaultDest(); - Switch->setDefaultDest(&*NewDefaultBlock); - if (DTU) - DTU->applyUpdates({{DominatorTree::Insert, BB, &*NewDefaultBlock}, - {DominatorTree::Delete, BB, OrigDefaultBlock}}); - - SplitBlock(&*NewDefaultBlock, &NewDefaultBlock->front(), DTU); - SmallVector<DominatorTree::UpdateType, 2> Updates; - if (DTU) - for (auto *Successor : successors(NewDefaultBlock)) - Updates.push_back({DominatorTree::Delete, NewDefaultBlock, Successor}); - auto *NewTerminator = NewDefaultBlock->getTerminator(); - new UnreachableInst(Switch->getContext(), NewTerminator); - NewTerminator->eraseFromParent(); - if (DTU) - DTU->applyUpdates(Updates); -} - BasicBlock *llvm::changeToInvokeAndSplitBasicBlock(CallInst *CI, BasicBlock *UnwindEdge, DomTreeUpdater *DTU) { |