summaryrefslogtreecommitdiff
path: root/lib/VMCore/Instruction.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2009-09-23 20:33:51 +0000
committerDevang Patel <dpatel@apple.com>2009-09-23 20:33:51 +0000
commitffa363c94b7180635efd3c5391da0e034eb138f3 (patch)
treed2433c2dc7de8f41bf250b9070e0826f3fbc58ef /lib/VMCore/Instruction.cpp
parent48e19352840a5f7012493ead894e81a2dbec1778 (diff)
downloadllvm-ffa363c94b7180635efd3c5391da0e034eb138f3.tar.gz
llvm-ffa363c94b7180635efd3c5391da0e034eb138f3.tar.bz2
llvm-ffa363c94b7180635efd3c5391da0e034eb138f3.tar.xz
Delete attached metadata when an instruction is deleted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82647 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/Instruction.cpp')
-rw-r--r--lib/VMCore/Instruction.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/VMCore/Instruction.cpp b/lib/VMCore/Instruction.cpp
index 35fb47a5ff..5cb1040e4b 100644
--- a/lib/VMCore/Instruction.cpp
+++ b/lib/VMCore/Instruction.cpp
@@ -11,6 +11,7 @@
//
//===----------------------------------------------------------------------===//
+#include "LLVMContextImpl.h"
#include "llvm/Type.h"
#include "llvm/Instructions.h"
#include "llvm/Function.h"
@@ -49,6 +50,10 @@ Instruction::Instruction(const Type *ty, unsigned it, Use *Ops, unsigned NumOps,
// Out of line virtual method, so the vtable, etc has a home.
Instruction::~Instruction() {
+ if (hasMetadata()) {
+ LLVMContext &Context = getContext();
+ Context.pImpl->TheMetadata.ValueIsDeleted(this);
+ }
assert(Parent == 0 && "Instruction still linked in the program!");
}