From 30ac7df857cf2144dadde270075fefa7293365ee Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 11 Apr 2008 16:42:06 +0000 Subject: [PATCH] improvements for IntrusiveRefCntPtr, patch by Mikhail Glushenkov git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49538 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/IntrusiveRefCntPtr.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/llvm/ADT/IntrusiveRefCntPtr.h b/include/llvm/ADT/IntrusiveRefCntPtr.h index 4709d45b2a5..ad2138b10e0 100644 --- a/include/llvm/ADT/IntrusiveRefCntPtr.h +++ b/include/llvm/ADT/IntrusiveRefCntPtr.h @@ -121,6 +121,11 @@ namespace llvm { retain(); } + IntrusiveRefCntPtr& operator=(const IntrusiveRefCntPtr& S) { + replace(S.getPtr()); + return *this; + } + template IntrusiveRefCntPtr& operator=(const IntrusiveRefCntPtr& S) { replace(S.getPtr()); @@ -140,7 +145,7 @@ namespace llvm { T* getPtr() const { return Obj; } - typedef T * IntrusiveRefCntPtr::*unspecified_bool_type; + typedef T* (IntrusiveRefCntPtr::*unspecified_bool_type) () const; operator unspecified_bool_type() const { return Obj == 0 ? 0 : &IntrusiveRefCntPtr::getPtr; } @@ -156,7 +161,7 @@ namespace llvm { void release() { if (Obj) Obj->Release(); } void replace(T* S) { - this_type(S).swap(this); + this_type(S).swap(*this); } };