From f14b1df55b64aa66ec799b948ef99c1558a4c4c8 Mon Sep 17 00:00:00 2001 From: "Duncan P. N. Exon Smith" Date: Wed, 10 Dec 2014 01:45:04 +0000 Subject: [PATCH] IR: Move call to dropAllReferences() to MDNode subclasses Don't call `dropAllReferences()` from `MDNode::~MDNode()`, call it directly from `~MDNodeFwdDecl()` and `~GenericMDNode()`. llvm-svn: 223904 --- llvm/include/llvm/IR/Metadata.h | 4 ++-- llvm/lib/IR/Metadata.cpp | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/llvm/include/llvm/IR/Metadata.h b/llvm/include/llvm/IR/Metadata.h index 573e49f..5e1b294 100644 --- a/llvm/include/llvm/IR/Metadata.h +++ b/llvm/include/llvm/IR/Metadata.h @@ -598,7 +598,7 @@ protected: } MDNode(LLVMContext &Context, unsigned ID, ArrayRef MDs); - ~MDNode() { dropAllReferences(); } + ~MDNode() {} void dropAllReferences(); void storeDistinctInContext(); @@ -766,7 +766,7 @@ class MDNodeFwdDecl : public MDNode, ReplaceableMetadataImpl { MDNodeFwdDecl(LLVMContext &C, ArrayRef Vals) : MDNode(C, MDNodeFwdDeclKind, Vals) {} - ~MDNodeFwdDecl() {} + ~MDNodeFwdDecl() { dropAllReferences(); } public: static bool classof(const Metadata *MD) { diff --git a/llvm/lib/IR/Metadata.cpp b/llvm/lib/IR/Metadata.cpp index 0f74849..506284f 100644 --- a/llvm/lib/IR/Metadata.cpp +++ b/llvm/lib/IR/Metadata.cpp @@ -428,6 +428,7 @@ GenericMDNode::~GenericMDNode() { pImpl->NonUniquedMDNodes.erase(this); else pImpl->MDNodeSet.erase(this); + dropAllReferences(); } void GenericMDNode::resolve() { -- 2.7.4