Moved removeFile() and getUniqueFilename() into FileUtilities.
[oota-llvm.git] / include / llvm / Analysis / Dominators.h
index 775f44e5c65f31a16c7940de0d5a16d33380089d..a38d7d199a5d2565b67012b5f5125a8acff2a0a3 100644 (file)
@@ -20,6 +20,7 @@
 
 #include "llvm/Pass.h"
 #include <set>
+
 class Instruction;
 
 template <typename GraphType> struct GraphTraits;
@@ -347,12 +348,12 @@ private:
 // DominatorTree GraphTraits specialization so the DominatorTree can be
 // iterable by generic graph iterators.
 
-template <> struct GraphTraits<DominatorTree*> {
+template <> struct GraphTraits<DominatorTree::Node*> {
   typedef DominatorTree::Node NodeType;
   typedef NodeType::iterator  ChildIteratorType;
 
-  static NodeType *getEntryNode(DominatorTree *DT) {
-    return DT->getNode(DT->getRoot());
+  static NodeType *getEntryNode(NodeType *N) {
+    return N;
   }
   static inline ChildIteratorType child_begin(NodeType* N) {
     return N->begin();
@@ -362,6 +363,13 @@ template <> struct GraphTraits<DominatorTree*> {
   }
 };
 
+template <> struct GraphTraits<DominatorTree*>
+  : public GraphTraits<DominatorTree::Node*> {
+  static NodeType *getEntryNode(DominatorTree *DT) {
+    return DT->getNode(DT->getRoot());
+  }
+};
+
 //===----------------------------------------------------------------------===//
 //
 // DominanceFrontier - Calculate the dominance frontiers for a function.
@@ -378,24 +386,26 @@ public:
   virtual void releaseMemory() { Frontiers.clear(); }
 
   // Accessor interface:
+  typedef DomSetMapType::iterator iterator;
   typedef DomSetMapType::const_iterator const_iterator;
+  iterator       begin()       { return Frontiers.begin(); }
   const_iterator begin() const { return Frontiers.begin(); }
+  iterator       end()         { return Frontiers.end(); }
   const_iterator end()   const { return Frontiers.end(); }
-  const_iterator find(BasicBlock* B) const { return Frontiers.find(B); }
+  iterator       find(BasicBlock *B)       { return Frontiers.find(B); }
+  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);
+  void addToFrontier(iterator I, BasicBlock *Node) {
     assert(I != end() && "BB is not in DominanceFrontier!");
     I->second.insert(Node);
   }
 
-  void removeFromFrontier(BasicBlock *BB, BasicBlock *Node) {
-    DomSetMapType::iterator I = Frontiers.find(BB);
+  void removeFromFrontier(iterator I, BasicBlock *Node) {
     assert(I != end() && "BB is not in DominanceFrontier!");
     assert(I->second.count(Node) && "Node is not in DominanceFrontier of BB");
     I->second.erase(Node);