From 1818275956b339de89ac57d90d37a88c3566048e Mon Sep 17 00:00:00 2001 From: "Vikram S. Adve" Date: Fri, 6 Dec 2002 15:02:22 +0000 Subject: [PATCH] Bug fix in operator==() and in method fini(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4945 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/Support/SCCIterator.h | 9 +++++---- include/llvm/ADT/SCCIterator.h | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/include/Support/SCCIterator.h b/include/Support/SCCIterator.h index 42d4bcb551c..26afdd76e4f 100644 --- a/include/Support/SCCIterator.h +++ b/include/Support/SCCIterator.h @@ -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; } }; diff --git a/include/llvm/ADT/SCCIterator.h b/include/llvm/ADT/SCCIterator.h index 42d4bcb551c..26afdd76e4f 100644 --- a/include/llvm/ADT/SCCIterator.h +++ b/include/llvm/ADT/SCCIterator.h @@ -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; } }; -- 2.50.1