From adede0387b749e58b845afac2979764f928efd74 Mon Sep 17 00:00:00 2001 From: Jay Foad Date: Wed, 26 Jan 2011 21:56:10 +0000 Subject: [PATCH] Simplify User::operator delete(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124330 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/User.h | 1 + lib/VMCore/User.cpp | 13 +++---------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/include/llvm/User.h b/include/llvm/User.h index 2aca78c41a6..1363495f7c0 100644 --- a/include/llvm/User.h +++ b/include/llvm/User.h @@ -53,6 +53,7 @@ protected: void dropHungoffUses() { Use::zap(OperandList, OperandList + NumOperands, true); OperandList = 0; + // Reset NumOperands so User::operator delete() does the right thing. NumOperands = 0; } public: diff --git a/lib/VMCore/User.cpp b/lib/VMCore/User.cpp index ba2b2081db5..2f4587debb6 100644 --- a/lib/VMCore/User.cpp +++ b/lib/VMCore/User.cpp @@ -73,16 +73,9 @@ void *User::operator new(size_t s, unsigned Us) { void User::operator delete(void *Usr) { User *Start = static_cast(Usr); Use *Storage = static_cast(Usr) - Start->NumOperands; - // - // look for a variadic User - if (Storage == Start->OperandList) { - ::operator delete(Storage); - return; - } - // - // in all other cases just delete the nullary User (covers hung-off - // uses also - ::operator delete(Usr); + // If there were hung-off uses, they will have been freed already and + // NumOperands reset to 0, so here we just free the User itself. + ::operator delete(Storage); } } // End llvm namespace