From 49109a279c6b7b3622fa0227f6c77a96d075f718 Mon Sep 17 00:00:00 2001 From: Alexey Samsonov Date: Mon, 18 Nov 2013 09:31:53 +0000 Subject: Revert r194865 and r194874. This change is incorrect. If you delete virtual destructor of both a base class and a subclass, then the following code: Base *foo = new Child(); delete foo; will not cause the destructor for members of Child class. As a result, I observe plently of memory leaks. Notable examples I investigated are: ObjectBuffer and ObjectBufferStream, AttributeImpl and StringSAttributeImpl. llvm-svn: 194997 --- llvm/lib/IR/Metadata.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'llvm/lib/IR/Metadata.cpp') diff --git a/llvm/lib/IR/Metadata.cpp b/llvm/lib/IR/Metadata.cpp index ef0660da864..bd4d9c0a077 100644 --- a/llvm/lib/IR/Metadata.cpp +++ b/llvm/lib/IR/Metadata.cpp @@ -65,7 +65,7 @@ class MDNodeOperand : public CallbackVH { public: MDNodeOperand(Value *V) : CallbackVH(V) {} - virtual ~MDNodeOperand(); + ~MDNodeOperand() {} void set(Value *V) { unsigned IsFirst = this->getValPtrInt(); @@ -82,8 +82,6 @@ public: }; } // end namespace llvm. -MDNodeOperand::~MDNodeOperand() {} - void MDNodeOperand::deleted() { getParent()->replaceOperand(this, 0); -- cgit v1.2.3