Add interface to update domfrontier info, thanks to Casey Carter for impl
authorChris Lattner <sabre@nondot.org>
Thu, 31 Oct 2002 02:39:48 +0000 (02:39 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 31 Oct 2002 02:39:48 +0000 (02:39 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4456 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Analysis/Dominators.h

index 2d0b8efb48e82c940c5a05eeb639c9b950aa5413..775f44e5c65f31a16c7940de0d5a16d33380089d 100644 (file)
@@ -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;