summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2012-05-27 20:46:04 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2012-05-27 20:46:04 +0000
commit78eb6e91bd0767ed1eb016c46767823d58295e77 (patch)
treeacdd3ea8a479cd68ff7c4f8983894bc169139199
parent144b61968471b8de97b9d08d7575ef742bb9dd0a (diff)
downloadbcm5719-llvm-78eb6e91bd0767ed1eb016c46767823d58295e77.tar.gz
bcm5719-llvm-78eb6e91bd0767ed1eb016c46767823d58295e77.zip
IntrusiveRefCntPtr: Use the same pattern as the other operator= overloads when using rvalue refs.
llvm-svn: 157546
-rw-r--r--llvm/include/llvm/ADT/IntrusiveRefCntPtr.h7
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h b/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h
index 947ccc46a52..37018d95e60 100644
--- a/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h
+++ b/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h
@@ -23,6 +23,7 @@
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compiler.h"
+#include <memory>
namespace llvm {
@@ -146,15 +147,13 @@ namespace llvm {
#if LLVM_USE_RVALUE_REFERENCES
IntrusiveRefCntPtr& operator=(IntrusiveRefCntPtr&& S) {
- Obj = S.Obj;
- S.Obj = 0;
+ this_type(std::move(S)).swap(*this);
return *this;
}
template <class X>
IntrusiveRefCntPtr& operator=(IntrusiveRefCntPtr<X>&& S) {
- Obj = S.getPtr();
- S.Obj = 0;
+ this_type(std::move(S)).swap(*this);
return *this;
}
#endif
OpenPOWER on IntegriCloud