diff options
author | Chris Lattner <sabre@nondot.org> | 2005-01-29 00:37:36 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-01-29 00:37:36 +0000 |
commit | 5598aa0328fd3a1cc0b93c461f0474e09c10662c (patch) | |
tree | 362bcbef99c12d3bfc6c69e10df6d66f3aff63bf /lib/Transforms | |
parent | 23ba420550499a071f70af7022847479d1165c68 (diff) |
Adjust Valuehandle to hold its operand directly in it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19897 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms')
-rw-r--r-- | lib/Transforms/ExprTypeConvert.cpp | 13 | ||||
-rw-r--r-- | lib/Transforms/TransformInternals.h | 1 |
2 files changed, 7 insertions, 7 deletions
diff --git a/lib/Transforms/ExprTypeConvert.cpp b/lib/Transforms/ExprTypeConvert.cpp index c95efacbbd..5822124231 100644 --- a/lib/Transforms/ExprTypeConvert.cpp +++ b/lib/Transforms/ExprTypeConvert.cpp @@ -1258,15 +1258,14 @@ static void ConvertOperandToType(User *U, Value *OldVal, Value *NewVal, ValueHandle::ValueHandle(ValueMapCache &VMC, Value *V) - : Instruction(Type::VoidTy, UserOp1, ""), Cache(VMC) { + : Instruction(Type::VoidTy, UserOp1, &Op, 1, ""), Op(V, this), Cache(VMC) { //DEBUG(std::cerr << "VH AQUIRING: " << (void*)V << " " << V); - Operands.push_back(Use(V, this)); } ValueHandle::ValueHandle(const ValueHandle &VH) - : Instruction(Type::VoidTy, UserOp1, ""), Cache(VH.Cache) { + : Instruction(Type::VoidTy, UserOp1, &Op, 1, ""), + Op(VH.Op, this), Cache(VH.Cache) { //DEBUG(std::cerr << "VH AQUIRING: " << (void*)V << " " << V); - Operands.push_back(Use((Value*)VH.getOperand(0), this)); } static void RecursiveDelete(ValueMapCache &Cache, Instruction *I) { @@ -1291,9 +1290,9 @@ static void RecursiveDelete(ValueMapCache &Cache, Instruction *I) { } ValueHandle::~ValueHandle() { - if (Operands[0]->hasOneUse()) { - Value *V = Operands[0]; - Operands[0] = 0; // Drop use! + if (Op->hasOneUse()) { + Value *V = Op; + Op.set(0); // Drop use! // Now we just need to remove the old instruction so we don't get infinite // loops. Note that we cannot use DCE because DCE won't remove a store diff --git a/lib/Transforms/TransformInternals.h b/lib/Transforms/TransformInternals.h index b5747c9130..9b90fcc112 100644 --- a/lib/Transforms/TransformInternals.h +++ b/lib/Transforms/TransformInternals.h @@ -59,6 +59,7 @@ const Type *ConvertibleToGEP(const Type *Ty, Value *V, // class ValueMapCache; class ValueHandle : public Instruction { + Use Op; ValueMapCache &Cache; public: ValueHandle(ValueMapCache &VMC, Value *V); |