summaryrefslogtreecommitdiff
path: root/include/llvm/Support/ValueHandle.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-10-10 08:27:29 +0000
committerChris Lattner <sabre@nondot.org>2009-10-10 08:27:29 +0000
commitf6811274e18a73e7ba84a820a28cc2549a4fab44 (patch)
tree159516457fb2f8b453cbb062558c0d8ec36888ac /include/llvm/Support/ValueHandle.h
parentfc61aeff2c5d964d81a63b709b5e1a50a5519e83 (diff)
downloadllvm-f6811274e18a73e7ba84a820a28cc2549a4fab44.tar.gz
llvm-f6811274e18a73e7ba84a820a28cc2549a4fab44.tar.bz2
llvm-f6811274e18a73e7ba84a820a28cc2549a4fab44.tar.xz
add some WeakVH::operator='s. Without these, assigning
a Value* to a WeakVH was constructing a temporary WeakVH (due to the implicit assignment operator). This avoids that cost. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83704 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/ValueHandle.h')
-rw-r--r--include/llvm/Support/ValueHandle.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/llvm/Support/ValueHandle.h b/include/llvm/Support/ValueHandle.h
index d22b30af48..a8f2bdba55 100644
--- a/include/llvm/Support/ValueHandle.h
+++ b/include/llvm/Support/ValueHandle.h
@@ -54,6 +54,8 @@ private:
PointerIntPair<ValueHandleBase**, 2, HandleBaseKind> PrevPair;
ValueHandleBase *Next;
Value *VP;
+
+ explicit ValueHandleBase(const ValueHandleBase&); // DO NOT IMPLEMENT.
public:
explicit ValueHandleBase(HandleBaseKind Kind)
: PrevPair(0, Kind), Next(0), VP(0) {}
@@ -131,6 +133,13 @@ public:
WeakVH(const WeakVH &RHS)
: ValueHandleBase(Weak, RHS) {}
+ Value *operator=(Value *RHS) {
+ return ValueHandleBase::operator=(RHS);
+ }
+ Value *operator=(const ValueHandleBase &RHS) {
+ return ValueHandleBase::operator=(RHS);
+ }
+
operator Value*() const {
return getValPtr();
}