Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, are
[oota-llvm.git] / include / llvm / Analysis / ET-Forest.h
index 02b0f76234267a5b5ce7c98d6528aea47659f22d..be9df98e26b3377aaaf34c93b4e794625a16e250 100644 (file)
@@ -50,6 +50,7 @@ public:
     Depth(0), Min(0), MinOccurrence(this) {};
 
   void setParent(ETOccurrence *n) {
+    assert(n != this && "Trying to set parent to ourselves");
     Parent = n;
   }
 
@@ -129,7 +130,8 @@ public:
 
 class ETNode {
 public:
-  ETNode(void *d) : data(d), Father(NULL), Left(NULL),
+  ETNode(void *d) : data(d), DFSNumIn(-1), DFSNumOut(-1),
+                    Father(NULL), Left(NULL),
                     Right(NULL), Son(NULL), ParentOcc(NULL) {   
     RightmostOcc = new ETOccurrence(this);
   };
@@ -248,16 +250,7 @@ public:
     return this->Below(other);
   }
 
-  void assignDFSNumber(int &num) {
-    DFSNumIn = num++;
-    
-    if (Son) {
-      Son->assignDFSNumber(num);
-      for (ETNode *son = Son->Right; son != Son; son = son->Right)
-        son->assignDFSNumber(num);
-    }
-    DFSNumOut = num++;
-  }
+  void assignDFSNumber (int);
   
   bool hasFather() const {
     return Father != NULL;
@@ -286,7 +279,7 @@ public:
   void *data;
 
   // DFS Numbers
-  unsigned DFSNumIn, DFSNumOut;
+  int DFSNumIn, DFSNumOut;
 
   // Father
   ETNode *Father;