diff options
-rw-r--r-- | lib/VMCore/LLVMContextImpl.h | 2 | ||||
-rw-r--r-- | lib/VMCore/Metadata.cpp | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/VMCore/LLVMContextImpl.h b/lib/VMCore/LLVMContextImpl.h index fda56083b0..3d1f3b26a5 100644 --- a/lib/VMCore/LLVMContextImpl.h +++ b/lib/VMCore/LLVMContextImpl.h @@ -105,7 +105,7 @@ struct LLVMContextImpl { ValueMap<char, Type, ConstantAggregateZero> AggZeroConstants; - ValueMap<std::vector<Value*>, Type, MDNode> MDNodes; + ValueMap<std::vector<Value*>, Type, MDNode, true /*largekey*/> MDNodes; typedef ValueMap<std::vector<Constant*>, ArrayType, ConstantArray, true /*largekey*/> ArrayConstantsTy; diff --git a/lib/VMCore/Metadata.cpp b/lib/VMCore/Metadata.cpp index 1680572ab9..3a61d0eefb 100644 --- a/lib/VMCore/Metadata.cpp +++ b/lib/VMCore/Metadata.cpp @@ -92,8 +92,17 @@ void MDNode::dropAllReferences() { Node.clear(); } +static std::vector<Value*> getValType(MDNode *N) { + std::vector<Value*> Elements; + Elements.reserve(N->getNumElements()); + for (unsigned i = 0, e = N->getNumElements(); i != e; ++i) + Elements.push_back(N->getElement(i)); + return Elements; +} + MDNode::~MDNode() { dropAllReferences(); + getType()->getContext().pImpl->MDNodes.remove(this); } //===----------------------------------------------------------------------===// //NamedMDNode implementation |