There is no need to keep name ref in NamedMDNode.
authorDevang Patel <dpatel@apple.com>
Wed, 29 Jul 2009 21:58:56 +0000 (21:58 +0000)
committerDevang Patel <dpatel@apple.com>
Wed, 29 Jul 2009 21:58:56 +0000 (21:58 +0000)
llvm-svn: 77511

llvm/include/llvm/Metadata.h
llvm/lib/AsmParser/LLParser.cpp
llvm/lib/VMCore/Metadata.cpp

index 54af723..7977c82 100644 (file)
@@ -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];
   }
 
index 2a2192c..8b3b832 100644 (file)
@@ -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;
 }
 
index 2f6c153..cb1dd65 100644 (file)
@@ -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);
 }