diff --git a/lib/VMCore/Metadata.cpp b/lib/VMCore/Metadata.cpp index 8e025b6d7a2..1163b4709ce 100644 --- a/lib/VMCore/Metadata.cpp +++ b/lib/VMCore/Metadata.cpp @@ -115,7 +115,11 @@ void MDNode::dropAllReferences() { } MDNode::~MDNode() { - getType()->getContext().pImpl->MDNodeSet.RemoveNode(this); + { + LLVMContextImpl *pImpl = getType()->getContext().pImpl; + sys::SmartScopedWriter Writer(pImpl->ConstantsLock); + pImpl->MDNodeSet.RemoveNode(this); + } dropAllReferences(); }