summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-10-31 02:39:48 +0000
committerChris Lattner <sabre@nondot.org>2002-10-31 02:39:48 +0000
commita24e09df76d327e9fdefa8e6801fedc2b6ad91d3 (patch)
treec2be0c84d57e92773867c2024cd1d6c74e50a859 /include
parentb07a4409c238d2be03b9248d16da7b03eb4077a9 (diff)
downloadllvm-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.h24
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;