diff --git a/llvm/include/llvm/ADT/SmallPtrSet.h b/llvm/include/llvm/ADT/SmallPtrSet.h index dca9f7995926d..d5332379fc542 100644 --- a/llvm/include/llvm/ADT/SmallPtrSet.h +++ b/llvm/include/llvm/ADT/SmallPtrSet.h @@ -281,16 +281,17 @@ class SmallPtrSetImplBase : public DebugEpochBase { /// instances of SmallPtrSetIterator. class SmallPtrSetIteratorImpl { protected: - const void *const *Bucket; - const void *const *End; + using BucketItTy = + std::conditional_t, + const void *const *>; + + BucketItTy Bucket; + BucketItTy End; public: explicit SmallPtrSetIteratorImpl(const void *const *BP, const void *const *E) : Bucket(BP), End(E) { - if (shouldReverseIterate()) { - RetreatIfNotValid(); - return; - } AdvanceIfNotValid(); } @@ -312,14 +313,6 @@ class SmallPtrSetIteratorImpl { *Bucket == SmallPtrSetImplBase::getTombstoneMarker())) ++Bucket; } - void RetreatIfNotValid() { - assert(Bucket >= End); - while (Bucket != End && - (Bucket[-1] == SmallPtrSetImplBase::getEmptyMarker() || - Bucket[-1] == SmallPtrSetImplBase::getTombstoneMarker())) { - --Bucket; - } - } }; /// SmallPtrSetIterator - This implements a const_iterator for SmallPtrSet. @@ -344,21 +337,12 @@ class LLVM_DEBUGEPOCHBASE_HANDLEBASE_EMPTYBASE SmallPtrSetIterator const PtrTy operator*() const { assert(isHandleInSync() && "invalid iterator access!"); - if (shouldReverseIterate()) { - assert(Bucket > End); - return PtrTraits::getFromVoidPointer(const_cast(Bucket[-1])); - } assert(Bucket < End); return PtrTraits::getFromVoidPointer(const_cast(*Bucket)); } inline SmallPtrSetIterator &operator++() { // Preincrement assert(isHandleInSync() && "invalid iterator access!"); - if (shouldReverseIterate()) { - --Bucket; - RetreatIfNotValid(); - return *this; - } ++Bucket; AdvanceIfNotValid(); return *this;