diff options
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Analysis/DomTreeUpdater.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Analysis/DomTreeUpdater.cpp | 93 |
1 files changed, 1 insertions, 92 deletions
diff --git a/contrib/llvm-project/llvm/lib/Analysis/DomTreeUpdater.cpp b/contrib/llvm-project/llvm/lib/Analysis/DomTreeUpdater.cpp index 6e299263e66d..888c16723208 100644 --- a/contrib/llvm-project/llvm/lib/Analysis/DomTreeUpdater.cpp +++ b/contrib/llvm-project/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; |