From bcb3a4189116b038940031d69356439e64bbf20c Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Tue, 29 Jul 2014 20:45:52 +0000 Subject: [PATCH] UseListShuffleVector: Remove copy constructor Remove the copy constructor added in r214178 to appease MSVC17 since it shouldn't be called at all. My guess is that explicitly deleting it will make the compiler happy. To round out the operations I've also deleted copy assignment and added move assignment. Otherwise no functionality change. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214213 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/UseListOrder.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/include/llvm/IR/UseListOrder.h b/include/llvm/IR/UseListOrder.h index 420e6d409bd..33c3a018ef1 100644 --- a/include/llvm/IR/UseListOrder.h +++ b/include/llvm/IR/UseListOrder.h @@ -51,15 +51,17 @@ class UseListShuffleVector { X.Size = 0; } + UseListShuffleVector(const UseListShuffleVector &X) LLVM_DELETED_FUNCTION; + UseListShuffleVector & + operator=(const UseListShuffleVector &X) LLVM_DELETED_FUNCTION; + public: UseListShuffleVector() : Size(0) {} UseListShuffleVector(UseListShuffleVector &&X) { moveUnchecked(X); } - UseListShuffleVector(const UseListShuffleVector &X) { - std::memcpy(this, &X, sizeof(UseListShuffleVector)); - if (!isSmall()) { - Storage.Ptr = new unsigned[Size]; - std::memcpy(Storage.Ptr, X.Storage.Ptr, Size * sizeof(*Storage.Ptr)); - } + UseListShuffleVector &operator=(UseListShuffleVector &&X) { + destroy(); + moveUnchecked(X); + return *this; } explicit UseListShuffleVector(size_t Size) : Size(Size) { if (!isSmall())