From 4a942d0863b103c807171a1ffc6112865768e19e Mon Sep 17 00:00:00 2001 From: Devang Patel Date: Wed, 29 Jul 2009 21:58:56 +0000 Subject: [PATCH] There is no need to keep name ref in NamedMDNode. llvm-svn: 77511 --- llvm/include/llvm/Metadata.h | 17 ++++++----------- llvm/lib/AsmParser/LLParser.cpp | 3 +-- llvm/lib/VMCore/Metadata.cpp | 13 +++++-------- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/llvm/include/llvm/Metadata.h b/llvm/include/llvm/Metadata.h index 54af723..7977c82 100644 --- a/llvm/include/llvm/Metadata.h +++ b/llvm/include/llvm/Metadata.h @@ -185,31 +185,26 @@ class NamedMDNode : public MetadataBase, public ilist_node { friend class LLVMContextImpl; Module *Parent; - StringRef Name; SmallVector Node; typedef SmallVectorImpl::iterator elem_iterator; protected: - explicit NamedMDNode(const char *N, unsigned NameLength, - MetadataBase*const* Vals, unsigned NumVals, - Module *M = 0); + explicit NamedMDNode(const Twine &N, MetadataBase*const* Vals, + unsigned NumVals, Module *M = 0); public: - static NamedMDNode *Create(const char *N, unsigned NamedLength, - MetadataBase*const*MDs, unsigned NumMDs, - Module *M = 0) { - return new NamedMDNode(N, NamedLength, MDs, NumMDs, M); + static NamedMDNode *Create(const Twine &N, MetadataBase*const*MDs, + unsigned NumMDs, Module *M = 0) { + return new NamedMDNode(N, MDs, NumMDs, M); } typedef SmallVectorImpl::const_iterator const_elem_iterator; - StringRef getName() const { return Name; } - /// getParent - Get the module that holds this named metadata collection. inline Module *getParent() { return Parent; } inline const Module *getParent() const { return Parent; } void setParent(Module *M) { Parent = M; } - Value *getElement(unsigned i) const { + MetadataBase *getElement(unsigned i) const { return Node[i]; } diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index 2a2192c..8b3b832 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -440,8 +440,7 @@ bool LLParser::ParseNamedMetadata() { if (ParseToken(lltok::rbrace, "expected end of metadata node")) return true; - NamedMDNode::Create(Name.c_str(), Name.length(), - Elts.data(), Elts.size(), M); + NamedMDNode::Create(Name, Elts.data(), Elts.size(), M); return false; } diff --git a/llvm/lib/VMCore/Metadata.cpp b/llvm/lib/VMCore/Metadata.cpp index 2f6c153..cb1dd65 100644 --- a/llvm/lib/VMCore/Metadata.cpp +++ b/llvm/lib/VMCore/Metadata.cpp @@ -33,15 +33,12 @@ void MDNode::Profile(FoldingSetNodeID &ID) const { //===----------------------------------------------------------------------===// //NamedMDNode implementation // -NamedMDNode::NamedMDNode(const char *N, unsigned NameLength, - MetadataBase*const* MDs, unsigned NumMDs, - Module *M) - : MetadataBase(Type::MetadataTy, Value::NamedMDNodeVal), - Name(N, NameLength) { +NamedMDNode::NamedMDNode(const Twine &N, MetadataBase*const* MDs, + unsigned NumMDs, Module *ParentModule) + : MetadataBase(Type::MetadataTy, Value::NamedMDNodeVal) { setName(N); for (unsigned i = 0; i != NumMDs; ++i) Node.push_back(WeakMetadataVH(MDs[i])); - - if (M) - M->getNamedMDList().push_back(this); + if (ParentModule) + ParentModule->getNamedMDList().push_back(this); } -- 2.7.4