diff --git a/include/llvm/Analysis/ValueTracking.h b/include/llvm/Analysis/ValueTracking.h
index 65c4e77..d994bc4 100644
--- a/include/llvm/Analysis/ValueTracking.h
+++ b/include/llvm/Analysis/ValueTracking.h
@@ -132,8 +132,8 @@
                              uint64_t Offset = 0);
 
   // FIXME: Remove this.
-  bool GetConstantStringInfo(const Value *V, std::string &Str,
-                             uint64_t Offset = 0);
+ // bool GetConstantStringInfo(const Value *V, std::string &Str,
+ //                            uint64_t Offset = 0);
 
   /// GetStringLength - If we can compute the length of the string pointed to by
   /// the specified pointer, return 'len+1'.  If we can't, return 0.
diff --git a/lib/Analysis/ValueTracking.cpp b/lib/Analysis/ValueTracking.cpp
index d51d7f2..4c18bdf 100644
--- a/lib/Analysis/ValueTracking.cpp
+++ b/lib/Analysis/ValueTracking.cpp
@@ -1603,16 +1603,6 @@
 }
 
 
-// FIXME: Remove this.
-bool llvm::GetConstantStringInfo(const Value *V, std::string &Str,
-                           uint64_t Offset) {
-  StringRef Tmp;
-  if (!getConstantStringInfo(V, Tmp, Offset))
-    return false;
-  Str = Tmp.str();
-  return true;
-}
-
 /// getConstantStringInfo - This function computes the length of a
 /// null-terminated C string pointed to by V.  If successful, it returns true
 /// and returns the string in Str.  If unsuccessful, it returns false.
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index 6b6f7bf..fe1a861 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -3299,7 +3299,7 @@
 /// string ptr.
 static SDValue getMemsetStringVal(EVT VT, DebugLoc dl, SelectionDAG &DAG,
                                   const TargetLowering &TLI,
-                                  std::string &Str, unsigned Offset) {
+                                  StringRef Str, unsigned Offset) {
   // Handle vector with all elements zero.
   if (Str.empty()) {
     if (VT.isInteger())
@@ -3343,7 +3343,7 @@
 
 /// isMemSrcFromString - Returns true if memcpy source is a string constant.
 ///
-static bool isMemSrcFromString(SDValue Src, std::string &Str) {
+static bool isMemSrcFromString(SDValue Src, StringRef &Str) {
   unsigned SrcDelta = 0;
   GlobalAddressSDNode *G = NULL;
   if (Src.getOpcode() == ISD::GlobalAddress)
@@ -3358,11 +3358,8 @@
     return false;
 
   if (const GlobalVariable *GV = dyn_cast<GlobalVariable>(G->getGlobal()))
-    if (GetConstantStringInfo(GV, Str, SrcDelta)) {
-      // The nul can also be read.
-      Str.push_back(0);
+    if (getConstantStringInfo(GV, Str, SrcDelta))
       return true;
-    }
 
   return false;
 }
@@ -3467,7 +3464,7 @@
   unsigned SrcAlign = DAG.InferPtrAlignment(Src);
   if (Align > SrcAlign)
     SrcAlign = Align;
-  std::string Str;
+  StringRef Str;
   bool CopyFromStr = isMemSrcFromString(Src, Str);
   bool isZeroStr = CopyFromStr && Str.empty();
   unsigned Limit = AlwaysInline ? ~0U : TLI.getMaxStoresPerMemcpy(OptSize);
