Use Twine, instead of StringRef, for consistency.
authorDevang Patel <dpatel@apple.com>
Tue, 12 Jan 2010 18:57:56 +0000 (18:57 +0000)
committerDevang Patel <dpatel@apple.com>
Tue, 12 Jan 2010 18:57:56 +0000 (18:57 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93249 91177308-0d34-0410-b5e6-96231b3b80d8

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

index f490bad2cc1c22be791ddc0edce6f2f5ff39d4a4..194de47ffe3eac07eef95a311407cccfedb0533c 100644 (file)
@@ -194,10 +194,10 @@ class NamedMDNode : public Value, public ilist_node<NamedMDNode> {
 
   void setParent(Module *M) { Parent = M; }
 protected:
-  explicit NamedMDNode(LLVMContext &C, StringRef N, MDNode*const *Vals, 
+  explicit NamedMDNode(LLVMContext &C, const Twine &N, MDNode*const *Vals, 
                        unsigned NumVals, Module *M = 0);
 public:
-  static NamedMDNode *Create(LLVMContext &C, StringRef N,
+  static NamedMDNode *Create(LLVMContext &C, const Twine &N,
                              MDNode *const *MDs, 
                              unsigned NumMDs, Module *M = 0) {
     return new NamedMDNode(C, N, MDs, NumMDs, M);
@@ -229,7 +229,7 @@ public:
   void addOperand(MDNode *M);
 
   /// setName - Set the name of this named metadata.
-  void setName(StringRef Name);
+  void setName(const Twine &NewName);
 
   /// getName - Return a constant reference to this named metadata's name.
   StringRef getName() const;
index 5ea7bd45e57807921a62665d18f1d85204cb46ca..e6a962bbca0a4f5de3f3a48c5f0b5014c44ed615 100644 (file)
@@ -18,6 +18,7 @@
 #include "llvm/Instruction.h"
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ADT/StringMap.h"
+#include "llvm/ADT/SmallString.h"
 #include "SymbolTableListTraitsImpl.h"
 #include "llvm/Support/ValueHandle.h"
 using namespace llvm;
@@ -263,7 +264,7 @@ static SmallVector<WeakVH, 4> &getNMDOps(void *Operands) {
   return *(SmallVector<WeakVH, 4>*)Operands;
 }
 
-NamedMDNode::NamedMDNode(LLVMContext &C, StringRef N,
+NamedMDNode::NamedMDNode(LLVMContext &C, const Twine &N,
                          MDNode *const *MDs,
                          unsigned NumMDs, Module *ParentModule)
   : Value(Type::getMetadataTy(C), Value::NamedMDNodeVal), Parent(0) {
@@ -322,11 +323,23 @@ void NamedMDNode::dropAllReferences() {
 }
 
 /// setName - Set the name of this named metadata.
-void NamedMDNode::setName(StringRef N) {
-  assert (!N.empty() && "Invalid named metadata name!");
-  Name = N.str();
+void NamedMDNode::setName(const Twine &NewName) {
+  assert (!NewName.isTriviallyEmpty() && "Invalid named metadata name!");
+
+  SmallString<256> NameData;
+  NewName.toVector(NameData);
+
+  const char *NameStr = NameData.data();
+  unsigned NameLen = NameData.size();
+
+  StringRef NameRef = StringRef(NameStr, NameLen);
+  // Name isn't changing?
+  if (getName() == NameRef)
+    return;
+
+  Name = NameRef.str();
   if (Parent)
-    Parent->getMDSymbolTable().insert(N, this);
+    Parent->getMDSymbolTable().insert(NameRef, this);
 }
 
 /// getName - Return a constant reference to this named metadata's name.