OSDN Git Service

Bug fix in operator==() and in method fini().
authorVikram S. Adve <vadve@cs.uiuc.edu>
Fri, 6 Dec 2002 15:02:22 +0000 (15:02 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Fri, 6 Dec 2002 15:02:22 +0000 (15:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4945 91177308-0d34-0410-b5e6-96231b3b80d8

include/Support/SCCIterator.h
include/llvm/ADT/SCCIterator.h

index 42d4bcb..26afdd7 100644 (file)
@@ -176,11 +176,12 @@ public:
 
   // Direct loop termination test (I.fini() is more efficient than I == end())
   inline bool fini() const {
-    return VisitStack.empty();
+    assert(!CurrentSCC.empty() || VisitStack.empty());
+    return CurrentSCC.empty();
   }
 
   inline bool operator==(const _Self& x) const { 
-    return VisitStack == x.VisitStack;
+    return VisitStack == x.VisitStack && CurrentSCC == x.CurrentSCC;
   }
   inline bool operator!=(const _Self& x) const { return !operator==(x); }
 
@@ -195,11 +196,11 @@ public:
 
   // Retrieve a pointer to the current SCC.  Returns NULL when done.
   inline const SccTy* operator*() const { 
-    assert(!CurrentSCC.empty() || fini());
+    assert(!CurrentSCC.empty() || VisitStack.empty());
     return CurrentSCC.empty()? NULL : &CurrentSCC;
   }
   inline SccTy* operator*() { 
-    assert(!CurrentSCC.empty() || fini());
+    assert(!CurrentSCC.empty() || VisitStack.empty());
     return CurrentSCC.empty()? NULL : &CurrentSCC;
   }
 };
index 42d4bcb..26afdd7 100644 (file)
@@ -176,11 +176,12 @@ public:
 
   // Direct loop termination test (I.fini() is more efficient than I == end())
   inline bool fini() const {
-    return VisitStack.empty();
+    assert(!CurrentSCC.empty() || VisitStack.empty());
+    return CurrentSCC.empty();
   }
 
   inline bool operator==(const _Self& x) const { 
-    return VisitStack == x.VisitStack;
+    return VisitStack == x.VisitStack && CurrentSCC == x.CurrentSCC;
   }
   inline bool operator!=(const _Self& x) const { return !operator==(x); }
 
@@ -195,11 +196,11 @@ public:
 
   // Retrieve a pointer to the current SCC.  Returns NULL when done.
   inline const SccTy* operator*() const { 
-    assert(!CurrentSCC.empty() || fini());
+    assert(!CurrentSCC.empty() || VisitStack.empty());
     return CurrentSCC.empty()? NULL : &CurrentSCC;
   }
   inline SccTy* operator*() { 
-    assert(!CurrentSCC.empty() || fini());
+    assert(!CurrentSCC.empty() || VisitStack.empty());
     return CurrentSCC.empty()? NULL : &CurrentSCC;
   }
 };