aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/llvm/Metadata.h17
-rw-r--r--lib/AsmParser/LLParser.cpp3
-rw-r--r--lib/VMCore/Metadata.cpp13
3 files changed, 12 insertions, 21 deletions
diff --git a/include/llvm/Metadata.h b/include/llvm/Metadata.h
index 54af723..7977c82 100644
--- a/include/llvm/Metadata.h
+++ b/include/llvm/Metadata.h
@@ -185,31 +185,26 @@ class NamedMDNode : public MetadataBase, public ilist_node<NamedMDNode> {
friend class LLVMContextImpl;
Module *Parent;
- StringRef Name;
SmallVector<WeakMetadataVH, 4> Node;
typedef SmallVectorImpl<WeakMetadataVH>::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<WeakMetadataVH>::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/lib/AsmParser/LLParser.cpp b/lib/AsmParser/LLParser.cpp
index 2a2192c..8b3b832 100644
--- a/lib/AsmParser/LLParser.cpp
+++ b/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/lib/VMCore/Metadata.cpp b/lib/VMCore/Metadata.cpp
index 2f6c153..cb1dd65 100644
--- a/lib/VMCore/Metadata.cpp
+++ b/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);
}