diff --git a/llvm/include/llvm/ADT/SmallVector.h b/llvm/include/llvm/ADT/SmallVector.h --- a/llvm/include/llvm/ADT/SmallVector.h +++ b/llvm/include/llvm/ADT/SmallVector.h @@ -424,6 +424,12 @@ this->grow(N); } + void pop_back_n(size_type NumItems) { + assert(this->size() >= NumItems); + this->destroy_range(this->end() - NumItems, this->end()); + this->set_size(this->size() - NumItems); + } + LLVM_NODISCARD T pop_back_val() { T Result = ::std::move(this->back()); this->pop_back(); diff --git a/llvm/unittests/ADT/SmallVectorTest.cpp b/llvm/unittests/ADT/SmallVectorTest.cpp --- a/llvm/unittests/ADT/SmallVectorTest.cpp +++ b/llvm/unittests/ADT/SmallVectorTest.cpp @@ -261,8 +261,7 @@ this->assertValuesInOrder(this->theVector, 2u, 2, 1); // Pop remaining elements - this->theVector.pop_back(); - this->theVector.pop_back(); + this->theVector.pop_back_n(2); this->assertEmpty(this->theVector); // Check number of constructor calls. Should be 2 for each list element,