diff --git a/include/llvm/Value.h b/include/llvm/Value.h
index 0ff0f7e..b460e9a 100644
--- a/include/llvm/Value.h
+++ b/include/llvm/Value.h
@@ -128,8 +128,11 @@
   StringRef getName() const { return StringRef(getNameStart(), getNameLen()); }
   std::string getNameStr() const;
 
+  /// setName() - Change the name of the value, choosing a new unique name if
+  /// the provided name is taken.
+  ///
+  /// \arg Name - The new name; or "" if the value's name should be removed.
   void setName(const Twine &Name);
-  void setName(const char *Name, unsigned NameLen);
 
   
   /// takeName - transfer the name from V to this value, setting V's name to
diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp
index 7a22402..0c6162c 100644
--- a/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -680,7 +680,7 @@
         return Error("Invalid Value ID in VST_ENTRY record");
       Value *V = ValueList[ValueID];
       
-      V->setName(&ValueName[0], ValueName.size());
+      V->setName(StringRef(ValueName.data(), ValueName.size()));
       ValueName.clear();
       break;
     }
@@ -691,7 +691,7 @@
       if (BB == 0)
         return Error("Invalid BB ID in VST_BBENTRY record");
       
-      BB->setName(&ValueName[0], ValueName.size());
+      BB->setName(StringRef(ValueName.data(), ValueName.size()));
       ValueName.clear();
       break;
     }
diff --git a/lib/VMCore/Value.cpp b/lib/VMCore/Value.cpp
index 1b9fe51..6157dd5 100644
--- a/lib/VMCore/Value.cpp
+++ b/lib/VMCore/Value.cpp
@@ -170,13 +170,13 @@
   return getName().str();
 }
 
-void Value::setName(const Twine &Name) {
+void Value::setName(const Twine &NewName) {
   SmallString<32> NameData;
-  Name.toVector(NameData);
-  setName(NameData.begin(), NameData.size());
-}
+  NewName.toVector(NameData);
 
-void Value::setName(const char *NameStr, unsigned NameLen) {
+  const char *NameStr = NameData.data();
+  unsigned NameLen = NameData.size();
+
   if (NameLen == 0 && !hasName()) return;
   assert(getType() != Type::VoidTy && "Cannot assign a name to void values!");
   
@@ -242,7 +242,7 @@
     if (getSymTab(this, ST)) {
       // We can't set a name on this value, but we need to clear V's name if
       // it has one.
-      if (V->hasName()) V->setName(0, 0);
+      if (V->hasName()) V->setName("");
       return;  // Cannot set a name on this value (e.g. constant).
     }
     
@@ -262,7 +262,7 @@
   if (!ST) {
     if (getSymTab(this, ST)) {
       // Clear V's name.
-      V->setName(0, 0);
+      V->setName("");
       return;  // Cannot set a name on this value (e.g. constant).
     }
   }
diff --git a/tools/bugpoint/ExtractFunction.cpp b/tools/bugpoint/ExtractFunction.cpp
index f0e9af7..41704f9 100644
--- a/tools/bugpoint/ExtractFunction.cpp
+++ b/tools/bugpoint/ExtractFunction.cpp
@@ -269,8 +269,8 @@
     I->setLinkage(GlobalValue::ExternalLinkage);
   for (Module::global_iterator I = M->global_begin(), E = M->global_end();
        I != E; ++I) {
-    if (I->hasName() && *I->getNameStart() == '\01')
-      I->setName(I->getNameStart()+1, I->getNameLen()-1);
+    if (I->hasName() && I->getName()[0] == '\01')
+      I->setName(I->getName().substr(1));
     I->setLinkage(GlobalValue::ExternalLinkage);
   }
 
