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 @@ -1206,7 +1206,12 @@ this->destroy_range(this->begin(), this->end()); } - explicit SmallVector(size_t Size, const T &Value = T()) + explicit SmallVector(size_t Size) + : SmallVectorImpl(N) { + this->resize(Size); + } + + SmallVector(size_t Size, const T &Value) : SmallVectorImpl(N) { this->assign(Size, Value); } 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 @@ -171,6 +171,10 @@ V.resize(42); } +LLVM_ATTRIBUTE_USED void ConstructNonCopyable() { + SmallVector V(42); +} + // Assert that v contains the specified values, in order. template void assertValuesInOrder(VectorT &v, size_t size, ...) {