diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2022-07-03 14:10:23 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2022-07-03 14:10:23 +0000 |
commit | 145449b1e420787bb99721a429341fa6be3adfb6 (patch) | |
tree | 1d56ae694a6de602e348dd80165cf881a36600ed /llvm/lib/Analysis/DomTreeUpdater.cpp | |
parent | ecbca9f5fb7d7613d2b94982c4825eb0d33d6842 (diff) |
Diffstat (limited to 'llvm/lib/Analysis/DomTreeUpdater.cpp')
-rw-r--r-- | llvm/lib/Analysis/DomTreeUpdater.cpp | 93 |
1 files changed, 1 insertions, 92 deletions
diff --git a/llvm/lib/Analysis/DomTreeUpdater.cpp b/llvm/lib/Analysis/DomTreeUpdater.cpp index 6e299263e66d..888c16723208 100644 --- a/llvm/lib/Analysis/DomTreeUpdater.cpp +++ b/llvm/lib/Analysis/DomTreeUpdater.cpp @@ -14,6 +14,7 @@ #include "llvm/Analysis/DomTreeUpdater.h" #include "llvm/ADT/SmallSet.h" #include "llvm/Analysis/PostDominators.h" +#include "llvm/IR/Constants.h" #include "llvm/IR/Instructions.h" #include "llvm/Support/GenericDomTree.h" #include <algorithm> @@ -314,98 +315,6 @@ PostDominatorTree &DomTreeUpdater::getPostDomTree() { return *PDT; } -void DomTreeUpdater::insertEdge(BasicBlock *From, BasicBlock *To) { - -#ifndef NDEBUG - assert(isUpdateValid({DominatorTree::Insert, From, To}) && - "Inserted edge does not appear in the CFG"); -#endif - - if (!DT && !PDT) - return; - - // Won't affect DomTree and PostDomTree; discard update. - if (From == To) - return; - - if (Strategy == UpdateStrategy::Eager) { - if (DT) - DT->insertEdge(From, To); - if (PDT) - PDT->insertEdge(From, To); - return; - } - - PendUpdates.push_back({DominatorTree::Insert, From, To}); -} - -void DomTreeUpdater::insertEdgeRelaxed(BasicBlock *From, BasicBlock *To) { - if (From == To) - return; - - if (!DT && !PDT) - return; - - if (!isUpdateValid({DominatorTree::Insert, From, To})) - return; - - if (Strategy == UpdateStrategy::Eager) { - if (DT) - DT->insertEdge(From, To); - if (PDT) - PDT->insertEdge(From, To); - return; - } - - PendUpdates.push_back({DominatorTree::Insert, From, To}); -} - -void DomTreeUpdater::deleteEdge(BasicBlock *From, BasicBlock *To) { - -#ifndef NDEBUG - assert(isUpdateValid({DominatorTree::Delete, From, To}) && - "Deleted edge still exists in the CFG!"); -#endif - - if (!DT && !PDT) - return; - - // Won't affect DomTree and PostDomTree; discard update. - if (From == To) - return; - - if (Strategy == UpdateStrategy::Eager) { - if (DT) - DT->deleteEdge(From, To); - if (PDT) - PDT->deleteEdge(From, To); - return; - } - - PendUpdates.push_back({DominatorTree::Delete, From, To}); -} - -void DomTreeUpdater::deleteEdgeRelaxed(BasicBlock *From, BasicBlock *To) { - if (From == To) - return; - - if (!DT && !PDT) - return; - - if (!isUpdateValid({DominatorTree::Delete, From, To})) - return; - - if (Strategy == UpdateStrategy::Eager) { - if (DT) - DT->deleteEdge(From, To); - if (PDT) - PDT->deleteEdge(From, To); - return; - } - - PendUpdates.push_back({DominatorTree::Delete, From, To}); -} - void DomTreeUpdater::dropOutOfDateUpdates() { if (Strategy == DomTreeUpdater::UpdateStrategy::Eager) return; |