From a24e09df76d327e9fdefa8e6801fedc2b6ad91d3 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 31 Oct 2002 02:39:48 +0000 Subject: [PATCH] Add interface to update domfrontier info, thanks to Casey Carter for impl git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4456 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Analysis/Dominators.h | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/include/llvm/Analysis/Dominators.h b/include/llvm/Analysis/Dominators.h index 2d0b8efb48e..775f44e5c65 100644 --- a/include/llvm/Analysis/Dominators.h +++ b/include/llvm/Analysis/Dominators.h @@ -379,9 +379,27 @@ public: // Accessor interface: typedef DomSetMapType::const_iterator const_iterator; - inline const_iterator begin() const { return Frontiers.begin(); } - inline const_iterator end() const { return Frontiers.end(); } - inline const_iterator find(BasicBlock* B) const { return Frontiers.find(B); } + const_iterator begin() const { return Frontiers.begin(); } + const_iterator end() const { return Frontiers.end(); } + const_iterator find(BasicBlock* B) const { return Frontiers.find(B); } + + void addBasicBlock(BasicBlock *BB, const DomSetType &frontier) { + assert(find(BB) == end() && "Block already in DominanceFrontier!"); + Frontiers.insert(std::make_pair(BB, frontier)); + } + + void addToFrontier(BasicBlock *BB, BasicBlock *Node) { + DomSetMapType::iterator I = Frontiers.find(BB); + assert(I != end() && "BB is not in DominanceFrontier!"); + I->second.insert(Node); + } + + void removeFromFrontier(BasicBlock *BB, BasicBlock *Node) { + DomSetMapType::iterator I = Frontiers.find(BB); + assert(I != end() && "BB is not in DominanceFrontier!"); + assert(I->second.count(Node) && "Node is not in DominanceFrontier of BB"); + I->second.erase(Node); + } // print - Convert to human readable form virtual void print(std::ostream &OS) const; -- 2.34.1