Using a std::string instead of a StringRef because the Default case synthesizes a temporary std::string from a Twine. Assigning that into a StringRef causes the StringRef to refer to a temporary, and bad things happen.

This fixes a failing test case on Windows.

llvm-svn: 213265
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 8f0902d..e5db2f0 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -1037,12 +1037,12 @@
   ABIName = getGnuCompatibleMipsABIName(ABIName);
 
   // Always override the backend's default ABI.
-  StringRef ABIFeature = llvm::StringSwitch<StringRef>(ABIName)
-                              .Case("32", "+o32")
-                              .Case("n32", "+n32")
-                              .Case("64", "+n64")
-                              .Case("eabi", "+eabi")
-                              .Default(("+" + ABIName).str());
+  std::string ABIFeature = llvm::StringSwitch<StringRef>(ABIName)
+                               .Case("32", "+o32")
+                               .Case("n32", "+n32")
+                               .Case("64", "+n64")
+                               .Case("eabi", "+eabi")
+                               .Default(("+" + ABIName).str());
   Features.push_back("-o32");
   Features.push_back("-n64");
   Features.push_back(Args.MakeArgString(ABIFeature));