Delete attached metadata when an instruction is deleted.
authorDevang Patel <dpatel@apple.com>
Wed, 23 Sep 2009 20:33:51 +0000 (20:33 +0000)
committerDevang Patel <dpatel@apple.com>
Wed, 23 Sep 2009 20:33:51 +0000 (20:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82647 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/Instruction.cpp

index 35fb47a5ffb3e07e019b73f3816950347554ea04..5cb1040e4bc4a41dc4483dbe2776d392fc46980d 100644 (file)
@@ -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!");
 }