aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
diff options
context:
space:
mode:
authorMax Kazantsev <max.kazantsev@azul.com>2019-02-06 06:00:02 +0000
committerMax Kazantsev <max.kazantsev@azul.com>2019-02-06 06:00:02 +0000
commit61e6ffc398e9b1e25488ea5b0dda546f18ef61e4 (patch)
tree5cc1c2430bcdf376131d63c0f30703c178716442 /llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
parentbad4db8b1a16545d601ac26fc7e2dd040af23135 (diff)
downloadllvm-61e6ffc398e9b1e25488ea5b0dda546f18ef61e4.zip
llvm-61e6ffc398e9b1e25488ea5b0dda546f18ef61e4.tar.gz
llvm-61e6ffc398e9b1e25488ea5b0dda546f18ef61e4.tar.bz2
[NFC] Extend API of DeleteDeadBlock(s) to collect updates without DTU
llvm-svn: 353274
Diffstat (limited to 'llvm/lib/Transforms/Utils/BasicBlockUtils.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/BasicBlockUtils.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
index cb8614f..82b9979 100644
--- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
+++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
@@ -47,12 +47,15 @@
using namespace llvm;
-void llvm::DeleteDeadBlock(BasicBlock *BB, DomTreeUpdater *DTU) {
- DeleteDeadBlocks({BB}, DTU);
+void llvm::DeleteDeadBlock(
+ BasicBlock *BB, DomTreeUpdater *DTU,
+ SmallVectorImpl<DominatorTree::UpdateType> *DTUpdates) {
+ DeleteDeadBlocks({BB}, DTU, DTUpdates);
}
-void llvm::DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs,
- DomTreeUpdater *DTU) {
+void llvm::DeleteDeadBlocks(
+ ArrayRef<BasicBlock *> BBs, DomTreeUpdater *DTU,
+ SmallVectorImpl<DominatorTree::UpdateType> *DTUpdates) {
#ifndef NDEBUG
// Make sure that all predecessors of each dead block is also dead.
SmallPtrSet<BasicBlock *, 4> Dead(BBs.begin(), BBs.end());
@@ -68,7 +71,7 @@ void llvm::DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs,
// of their predecessors is going away.
for (BasicBlock *Succ : successors(BB)) {
Succ->removePredecessor(BB);
- if (DTU)
+ if (DTU || DTUpdates)
Updates.push_back({DominatorTree::Delete, BB, Succ});
}
@@ -92,6 +95,8 @@ void llvm::DeleteDeadBlocks(ArrayRef <BasicBlock *> BBs,
}
if (DTU)
DTU->applyUpdates(Updates, /*ForceRemoveDuplicates*/ true);
+ if (DTUpdates)
+ DTUpdates->append(Updates.begin(), Updates.end());
for (BasicBlock *BB : BBs)
if (DTU)