[llvm] r358332 - [ADT] Fix OwningArrayRef's move ctor

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 13 06:52:11 PDT 2019


Author: maskray
Date: Sat Apr 13 06:52:11 2019
New Revision: 358332

URL: http://llvm.org/viewvc/llvm-project?rev=358332&view=rev
Log:
[ADT] Fix OwningArrayRef's move ctor

Modified:
    llvm/trunk/include/llvm/ADT/ArrayRef.h
    llvm/trunk/unittests/ADT/ArrayRefTest.cpp

Modified: llvm/trunk/include/llvm/ADT/ArrayRef.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/ArrayRef.h?rev=358332&r1=358331&r2=358332&view=diff
==============================================================================
--- llvm/trunk/include/llvm/ADT/ArrayRef.h (original)
+++ llvm/trunk/include/llvm/ADT/ArrayRef.h Sat Apr 13 06:52:11 2019
@@ -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();

Modified: llvm/trunk/unittests/ADT/ArrayRefTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/ArrayRefTest.cpp?rev=358332&r1=358331&r2=358332&view=diff
==============================================================================
--- llvm/trunk/unittests/ADT/ArrayRefTest.cpp (original)
+++ llvm/trunk/unittests/ADT/ArrayRefTest.cpp Sat Apr 13 06:52:11 2019
@@ -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");
 




More information about the llvm-commits mailing list