diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/ADT/ArrayRef.h | 2 | ||||
-rw-r--r-- | llvm/unittests/ADT/ArrayRefTest.cpp | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/llvm/include/llvm/ADT/ArrayRef.h b/llvm/include/llvm/ADT/ArrayRef.h index 75bb7d690cc..773c88f7c9f 100644 --- a/llvm/include/llvm/ADT/ArrayRef.h +++ b/llvm/include/llvm/ADT/ArrayRef.h @@ -430,7 +430,7 @@ namespace llvm { std::copy(Data.begin(), Data.end(), this->begin()); } - OwningArrayRef(OwningArrayRef &&Other) { *this = Other; } + OwningArrayRef(OwningArrayRef &&Other) { *this = std::move(Other); } OwningArrayRef &operator=(OwningArrayRef &&Other) { delete[] this->data(); diff --git a/llvm/unittests/ADT/ArrayRefTest.cpp b/llvm/unittests/ADT/ArrayRefTest.cpp index a5609f89ff9..4f8275c4bb3 100644 --- a/llvm/unittests/ADT/ArrayRefTest.cpp +++ b/llvm/unittests/ADT/ArrayRefTest.cpp @@ -248,6 +248,13 @@ TEST(ArrayRefTest, makeArrayRef) { EXPECT_TRUE(AR2.equals(AR2Ref)); } +TEST(ArrayRefTest, OwningArrayRef) { + static const int A1[] = {0, 1}; + OwningArrayRef<int> A(makeArrayRef(A1)); + OwningArrayRef<int> B(std::move(A)); + EXPECT_EQ(A.data(), nullptr); +} + static_assert(is_trivially_copyable<ArrayRef<int>>::value, "trivially copyable"); |