From 29e7b322eab2284b434cc270bb36ade7c8a62755 Mon Sep 17 00:00:00 2001 From: PJ Reiniger Date: Sat, 7 May 2022 23:02:07 -0400 Subject: [PATCH 10/31] Remove reverse iterator --- llvm/include/llvm/ADT/DenseMap.h | 74 ++++------------------------- llvm/include/llvm/ADT/SmallPtrSet.h | 21 +------- 2 files changed, 11 insertions(+), 84 deletions(-) diff --git a/llvm/include/llvm/ADT/DenseMap.h b/llvm/include/llvm/ADT/DenseMap.h index 588c39faea2f..5e5c020adf0b 100644 --- a/llvm/include/llvm/ADT/DenseMap.h +++ b/llvm/include/llvm/ADT/DenseMap.h @@ -76,8 +76,6 @@ public: // empty buckets. if (empty()) return end(); - if (shouldReverseIterate()) - return makeIterator(getBucketsEnd() - 1, getBuckets(), *this); return makeIterator(getBuckets(), getBucketsEnd(), *this); } inline iterator end() { @@ -86,8 +84,6 @@ public: inline const_iterator begin() const { if (empty()) return end(); - if (shouldReverseIterate()) - return makeConstIterator(getBucketsEnd() - 1, getBuckets(), *this); return makeConstIterator(getBuckets(), getBucketsEnd(), *this); } inline const_iterator end() const { @@ -150,18 +146,14 @@ public: iterator find(const_arg_type_t Val) { BucketT *TheBucket; if (LookupBucketFor(Val, TheBucket)) - return makeIterator(TheBucket, - shouldReverseIterate() ? getBuckets() - : getBucketsEnd(), + return makeIterator(TheBucket, getBucketsEnd(), *this, true); return end(); } const_iterator find(const_arg_type_t Val) const { const BucketT *TheBucket; if (LookupBucketFor(Val, TheBucket)) - return makeConstIterator(TheBucket, - shouldReverseIterate() ? getBuckets() - : getBucketsEnd(), + return makeConstIterator(TheBucket, getBucketsEnd(), *this, true); return end(); } @@ -175,9 +167,7 @@ public: iterator find_as(const LookupKeyT &Val) { BucketT *TheBucket; if (LookupBucketFor(Val, TheBucket)) - return makeIterator(TheBucket, - shouldReverseIterate() ? getBuckets() - : getBucketsEnd(), + return makeIterator(TheBucket, getBucketsEnd(), *this, true); return end(); } @@ -185,9 +175,7 @@ public: const_iterator find_as(const LookupKeyT &Val) const { const BucketT *TheBucket; if (LookupBucketFor(Val, TheBucket)) - return makeConstIterator(TheBucket, - shouldReverseIterate() ? getBuckets() - : getBucketsEnd(), + return makeConstIterator(TheBucket, getBucketsEnd(), *this, true); return end(); } @@ -222,20 +210,14 @@ public: std::pair try_emplace(KeyT &&Key, Ts &&... Args) { BucketT *TheBucket; if (LookupBucketFor(Key, TheBucket)) - return std::make_pair(makeIterator(TheBucket, - shouldReverseIterate() - ? getBuckets() - : getBucketsEnd(), + return std::make_pair(makeIterator(TheBucket, getBucketsEnd(), *this, true), false); // Already in map. // Otherwise, insert the new element. TheBucket = InsertIntoBucket(TheBucket, std::move(Key), std::forward(Args)...); - return std::make_pair(makeIterator(TheBucket, - shouldReverseIterate() - ? getBuckets() - : getBucketsEnd(), + return std::make_pair(makeIterator(TheBucket, getBucketsEnd(), *this, true), true); } @@ -247,19 +229,13 @@ public: std::pair try_emplace(const KeyT &Key, Ts &&... Args) { BucketT *TheBucket; if (LookupBucketFor(Key, TheBucket)) - return std::make_pair(makeIterator(TheBucket, - shouldReverseIterate() - ? getBuckets() - : getBucketsEnd(), + return std::make_pair(makeIterator(TheBucket, getBucketsEnd(), *this, true), false); // Already in map. // Otherwise, insert the new element. TheBucket = InsertIntoBucket(TheBucket, Key, std::forward(Args)...); - return std::make_pair(makeIterator(TheBucket, - shouldReverseIterate() - ? getBuckets() - : getBucketsEnd(), + return std::make_pair(makeIterator(TheBucket, getBucketsEnd(), *this, true), true); } @@ -274,20 +250,14 @@ public: const LookupKeyT &Val) { BucketT *TheBucket; if (LookupBucketFor(Val, TheBucket)) - return std::make_pair(makeIterator(TheBucket, - shouldReverseIterate() - ? getBuckets() - : getBucketsEnd(), + return std::make_pair(makeIterator(TheBucket, getBucketsEnd(), *this, true), false); // Already in map. // Otherwise, insert the new element. TheBucket = InsertIntoBucketWithLookup(TheBucket, std::move(KV.first), std::move(KV.second), Val); - return std::make_pair(makeIterator(TheBucket, - shouldReverseIterate() - ? getBuckets() - : getBucketsEnd(), + return std::make_pair(makeIterator(TheBucket, getBucketsEnd(), *this, true), true); } @@ -464,20 +434,12 @@ private: iterator makeIterator(BucketT *P, BucketT *E, DebugEpochBase &Epoch, bool NoAdvance=false) { - if (shouldReverseIterate()) { - BucketT *B = P == getBucketsEnd() ? getBuckets() : P + 1; - return iterator(B, E, Epoch, NoAdvance); - } return iterator(P, E, Epoch, NoAdvance); } const_iterator makeConstIterator(const BucketT *P, const BucketT *E, const DebugEpochBase &Epoch, const bool NoAdvance=false) const { - if (shouldReverseIterate()) { - const BucketT *B = P == getBucketsEnd() ? getBuckets() : P + 1; - return const_iterator(B, E, Epoch, NoAdvance); - } return const_iterator(P, E, Epoch, NoAdvance); } @@ -1214,10 +1176,6 @@ public: assert(isHandleInSync() && "invalid construction!"); if (NoAdvance) return; - if (shouldReverseIterate()) { - RetreatPastEmptyBuckets(); - return; - } AdvancePastEmptyBuckets(); } @@ -1232,16 +1190,10 @@ public: reference operator*() const { assert(isHandleInSync() && "invalid iterator access!"); - assert(Ptr != End && "dereferencing end() iterator"); - if (shouldReverseIterate()) - return Ptr[-1]; return *Ptr; } pointer operator->() const { assert(isHandleInSync() && "invalid iterator access!"); - assert(Ptr != End && "dereferencing end() iterator"); - if (shouldReverseIterate()) - return &(Ptr[-1]); return Ptr; } @@ -1261,12 +1213,6 @@ public: inline DenseMapIterator& operator++() { // Preincrement assert(isHandleInSync() && "invalid iterator access!"); - assert(Ptr != End && "incrementing end() iterator"); - if (shouldReverseIterate()) { - --Ptr; - RetreatPastEmptyBuckets(); - return *this; - } ++Ptr; AdvancePastEmptyBuckets(); return *this; diff --git a/llvm/include/llvm/ADT/SmallPtrSet.h b/llvm/include/llvm/ADT/SmallPtrSet.h index 981b741669b0..e46a5171e301 100644 --- a/llvm/include/llvm/ADT/SmallPtrSet.h +++ b/llvm/include/llvm/ADT/SmallPtrSet.h @@ -226,10 +226,6 @@ protected: public: explicit SmallPtrSetIteratorImpl(const void *const *BP, const void*const *E) : Bucket(BP), End(E) { - if (shouldReverseIterate()) { - RetreatIfNotValid(); - return; - } AdvanceIfNotValid(); } @@ -281,22 +277,11 @@ public: // Most methods are provided by the base class. 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; @@ -400,8 +385,6 @@ public: } iterator begin() const { - if (shouldReverseIterate()) - return makeIterator(EndPointer() - 1); return makeIterator(CurArray); } iterator end() const { return makeIterator(EndPointer()); } @@ -409,9 +392,7 @@ public: private: /// Create an iterator that dereferences to same place as the given pointer. iterator makeIterator(const void *const *P) const { - if (shouldReverseIterate()) - return iterator(P == EndPointer() ? CurArray : P + 1, CurArray, *this); - return iterator(P, EndPointer(), *this); + return iterator(P, EndPointer()); } }; -- 2.20.1.windows.1