From bffcbafc7b539b11699b7b5a608e21b65c350ee2 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Fri, 15 Aug 2025 22:09:48 -0700 Subject: [PATCH] [ADT] Use llvm::copy in SmallPtrSet.cpp (NFC) This patch uses llvm::copy in combination with buckets() and small_buckets(). --- llvm/include/llvm/ADT/SmallPtrSet.h | 4 ++++ llvm/lib/Support/SmallPtrSet.cpp | 10 +++++----- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/llvm/include/llvm/ADT/SmallPtrSet.h b/llvm/include/llvm/ADT/SmallPtrSet.h index 2829cbf41b66c..0d7fe308a32fb 100644 --- a/llvm/include/llvm/ADT/SmallPtrSet.h +++ b/llvm/include/llvm/ADT/SmallPtrSet.h @@ -160,6 +160,10 @@ class SmallPtrSetImplBase : public DebugEpochBase { return make_range(CurArray, EndPointer()); } + iterator_range buckets() const { + return make_range(CurArray, EndPointer()); + } + /// insert_imp - This returns true if the pointer was new to the set, false if /// it was already in the set. This is hidden from the client so that the /// derived class can check that the right type of pointer is passed in. diff --git a/llvm/lib/Support/SmallPtrSet.cpp b/llvm/lib/Support/SmallPtrSet.cpp index 46cf53f1ecf83..39fe1715d19bf 100644 --- a/llvm/lib/Support/SmallPtrSet.cpp +++ b/llvm/lib/Support/SmallPtrSet.cpp @@ -13,6 +13,7 @@ #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/DenseMapInfo.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/Support/MathExtras.h" #include "llvm/Support/MemAlloc.h" #include @@ -190,7 +191,7 @@ void SmallPtrSetImplBase::copyHelper(const SmallPtrSetImplBase &RHS) { CurArraySize = RHS.CurArraySize; // Copy over the contents from the other set - std::copy(RHS.CurArray, RHS.EndPointer(), CurArray); + llvm::copy(RHS.buckets(), CurArray); NumEntries = RHS.NumEntries; NumTombstones = RHS.NumTombstones; @@ -214,7 +215,7 @@ void SmallPtrSetImplBase::moveHelper(const void **SmallStorage, if (RHS.isSmall()) { // Copy a small RHS rather than moving. CurArray = SmallStorage; - std::copy(RHS.CurArray, RHS.CurArray + RHS.NumEntries, CurArray); + llvm::copy(RHS.small_buckets(), CurArray); } else { CurArray = RHS.CurArray; RHS.CurArray = RHSSmallStorage; @@ -252,7 +253,7 @@ void SmallPtrSetImplBase::swap(const void **SmallStorage, // If only RHS is small, copy the small elements into LHS and move the pointer // from LHS to RHS. if (!this->isSmall() && RHS.isSmall()) { - std::copy(RHS.CurArray, RHS.CurArray + RHS.NumEntries, SmallStorage); + llvm::copy(RHS.small_buckets(), SmallStorage); std::swap(RHS.CurArraySize, this->CurArraySize); std::swap(this->NumEntries, RHS.NumEntries); std::swap(this->NumTombstones, RHS.NumTombstones); @@ -266,8 +267,7 @@ void SmallPtrSetImplBase::swap(const void **SmallStorage, // If only LHS is small, copy the small elements into RHS and move the pointer // from RHS to LHS. if (this->isSmall() && !RHS.isSmall()) { - std::copy(this->CurArray, this->CurArray + this->NumEntries, - RHSSmallStorage); + llvm::copy(this->small_buckets(), RHSSmallStorage); std::swap(RHS.CurArraySize, this->CurArraySize); std::swap(RHS.NumEntries, this->NumEntries); std::swap(RHS.NumTombstones, this->NumTombstones);