[llvm-commits] CVS: llvm/include/llvm/Analysis/IntervalIterator.h

Chris Lattner lattner at cs.uiuc.edu
Wed Oct 1 17:29:01 PDT 2003


Changes in directory llvm/include/llvm/Analysis:

IntervalIterator.h updated: 1.14 -> 1.15

---
Log message:

Use graph traits to perform generic interval construction


---
Diffs of the changes:

Index: llvm/include/llvm/Analysis/IntervalIterator.h
diff -u llvm/include/llvm/Analysis/IntervalIterator.h:1.14 llvm/include/llvm/Analysis/IntervalIterator.h:1.15
--- llvm/include/llvm/Analysis/IntervalIterator.h:1.14	Tue Sep 30 13:37:40 2003
+++ llvm/include/llvm/Analysis/IntervalIterator.h	Wed Oct  1 17:28:00 2003
@@ -76,7 +76,8 @@
 
 
 
-template<class NodeTy, class OrigContainer_t>
+template<class NodeTy, class OrigContainer_t, class GT = GraphTraits<NodeTy*>,
+         class IGT = GraphTraits<Inverse<NodeTy*> > >
 class IntervalIterator {
   std::stack<std::pair<Interval*, typename Interval::succ_iterator> > IntStack;
   std::set<BasicBlock*> Visited;
@@ -163,8 +164,8 @@
     Visited.insert(Header);   // The header has now been visited!
 
     // Check all of our successors to see if they are in the interval...
-    for (typename NodeTy::succ_iterator I = succ_begin(Node),
-                                        E = succ_end(Node); I != E; ++I)
+    for (typename GT::ChildIteratorType I = GT::child_begin(Node),
+           E = GT::child_end(Node); I != E; ++I)
       ProcessNode(Int, getSourceGraphNode(OrigContainer, *I));
 
     IntStack.push(make_pair(Int, succ_begin(Int)));
@@ -194,8 +195,8 @@
 	  Int->Successors.push_back(NodeHeader);
       }
     } else {                             // Otherwise, not in interval yet
-      for (typename NodeTy::pred_iterator I = pred_begin(Node), 
-	                                  E = pred_end(Node); I != E; ++I) {
+      for (typename IGT::ChildIteratorType I = IGT::child_begin(Node), 
+             E = IGT::child_end(Node); I != E; ++I) {
 	if (!Int->contains(*I)) {        // If pred not in interval, we can't be
 	  if (!Int->isSuccessor(NodeHeader)) // Add only if not already in set
 	    Int->Successors.push_back(NodeHeader);
@@ -217,8 +218,8 @@
     
       // Now that we have discovered that Node is in the interval, perhaps some
       // of its successors are as well?
-      for (typename NodeTy::succ_iterator It = succ_begin(Node),
-	     End = succ_end(Node); It != End; ++It)
+      for (typename GT::ChildIteratorType It = GT::child_begin(Node),
+	     End = GT::child_end(Node); It != End; ++It)
 	ProcessNode(Int, getSourceGraphNode(OrigContainer, *It));
     }
   }





More information about the llvm-commits mailing list