diff options
author | Chris Lattner <sabre@nondot.org> | 2002-10-31 02:39:48 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-10-31 02:39:48 +0000 |
commit | a24e09df76d327e9fdefa8e6801fedc2b6ad91d3 (patch) | |
tree | c2be0c84d57e92773867c2024cd1d6c74e50a859 /include | |
parent | b07a4409c238d2be03b9248d16da7b03eb4077a9 (diff) | |
download | llvm-a24e09df76d327e9fdefa8e6801fedc2b6ad91d3.tar.gz llvm-a24e09df76d327e9fdefa8e6801fedc2b6ad91d3.tar.bz2 llvm-a24e09df76d327e9fdefa8e6801fedc2b6ad91d3.tar.xz |
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
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/Analysis/Dominators.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/include/llvm/Analysis/Dominators.h b/include/llvm/Analysis/Dominators.h index 2d0b8efb48..775f44e5c6 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; |