driver, bridge: explicitly convert llvm::StringRef to std::string

LLVM no longer allows StringRef implicitly converting to
std::string. Use explicit conversions.

Fixes golang/go#36912.

Change-Id: I8861076db85e61488176b92d9639be312269d060
Reviewed-on: https://go-review.googlesource.com/c/gollvm/+/217337
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/bridge/go-llvm-materialize.cpp b/bridge/go-llvm-materialize.cpp
index 5ce47bf..d833706 100644
--- a/bridge/go-llvm-materialize.cpp
+++ b/bridge/go-llvm-materialize.cpp
@@ -1496,7 +1496,7 @@
   llvm::Value *callValue = nullptr;
   if (llvm::isa<llvm::Function>(fnval)) {
     llvm::Function *fcn = llvm::cast<llvm::Function>(fnval);
-    BuiltinEntry *be = builtinTable_->lookup(fcn->getName());
+    BuiltinEntry *be = builtinTable_->lookup(fcn->getName().str());
     if (be) {
       BuiltinExprMaker makerfn = be->exprMaker();
       if (makerfn)
diff --git a/bridge/go-sha1.cpp b/bridge/go-sha1.cpp
index cc1d5ff..0fa9279 100644
--- a/bridge/go-sha1.cpp
+++ b/bridge/go-sha1.cpp
@@ -46,7 +46,7 @@
 std::string
 Llvm_Sha1_Helper::finish()
 {
-  std::string result(ctx_->final(), 0, checksum_len);
+  std::string result(ctx_->final().str(), 0, checksum_len);
   return result;
 }
 
diff --git a/driver/CompileGo.cpp b/driver/CompileGo.cpp
index 2dd64c0..9bbce86 100644
--- a/driver/CompileGo.cpp
+++ b/driver/CompileGo.cpp
@@ -255,7 +255,7 @@
 void CompileGoImpl::dumpArg(opt::Arg &arg, bool doquote)
 {
   if (arg.getOption().getKind() != opt::Option::InputClass)
-    quoteDump(arg.getSpelling(), doquote);
+    quoteDump(arg.getSpelling().str(), doquote);
   for (auto &val : arg.getValues())
     quoteDump(val, doquote);
 }
@@ -422,7 +422,7 @@
         errs() << progname_ << ": unable to access file: " << fname << "\n";
         return false;
       }
-      sampleProfileFile_ = fname;
+      sampleProfileFile_ = fname.str();
     }
   }
 
@@ -526,7 +526,7 @@
   if (cpuarg != nullptr) {
     std::string val(cpuarg->getValue());
     if (val == "native")
-      cpuStr = sys::getHostCPUName();
+      cpuStr = sys::getHostCPUName().str();
     else
       cpuStr = cpuarg->getValue();
   }
diff --git a/driver/Driver.cpp b/driver/Driver.cpp
index dc65e5b..8db03f2 100644
--- a/driver/Driver.cpp
+++ b/driver/Driver.cpp
@@ -50,7 +50,7 @@
   }
   SmallString<128> abspath(executablePath_);
   llvm::sys::fs::make_absolute(abspath);
-  installDir_ = llvm::sys::path::parent_path(abspath);
+  installDir_ = llvm::sys::path::parent_path(abspath).str();
   prefixes_ = args.getAllArgValues(gollvm::options::OPT_B);
 }
 
@@ -105,17 +105,17 @@
   llvm::SmallString<256> installed(installedLibDir());
   llvm::sys::path::append(installed, name);
   if (llvm::sys::fs::exists(llvm::Twine(installed)))
-    return installed.str();
+    return std::string(installed);
 
   // Examine toolchain file paths.
   for (const auto &dir : toolchain.filePaths()) {
     llvm::SmallString<256> candidate(dir);
     llvm::sys::path::append(candidate, name);
     if (llvm::sys::fs::exists(llvm::Twine(candidate)))
-      return candidate.str();
+      return std::string(candidate);
   }
 
-  return name;
+  return name.str();
 }
 
 std::string Driver::getProgramPath(llvm::StringRef name,
@@ -126,7 +126,7 @@
   for (auto p : prefixes_)
     candidates.push_back((p + name).str());
   candidates.push_back((triple_.str() + "-" + name).str());
-  candidates.push_back(name);
+  candidates.push_back(name.str());
 
   // Examine toolchain program paths.
   for (auto &dir : toolchain.programPaths()) {
@@ -134,7 +134,7 @@
       llvm::SmallString<256> candidate(dir);
       llvm::sys::path::append(candidate, cand);
       if (llvm::sys::fs::can_execute(llvm::Twine(candidate)))
-        return candidate.str();
+        return std::string(candidate);
     }
   }
 
@@ -146,7 +146,7 @@
       return *pcand;
   }
 
-  return name;
+  return name.str();
 }
 
 // FIXME: some  platforms have PIE enabled by default; we don't
diff --git a/driver/GccUtils.cpp b/driver/GccUtils.cpp
index 78b88f3..f8f8c8e 100644
--- a/driver/GccUtils.cpp
+++ b/driver/GccUtils.cpp
@@ -87,7 +87,7 @@
       llvm::StringRef(tokens[0]).getAsInteger(10, result.maj_) ||
       result.maj_ < 4)
     return bad;
-  result.text_ = vtext;
+  result.text_ = vtext.str();
   if (tokens.size() == 1)
     return result;
 
diff --git a/driver/LinuxToolChain.cpp b/driver/LinuxToolChain.cpp
index dfce121..cc41379 100644
--- a/driver/LinuxToolChain.cpp
+++ b/driver/LinuxToolChain.cpp
@@ -64,7 +64,7 @@
   // File paths
   pathlist &fpaths = filePaths();
   addIfPathExists(fpaths, gccDetector_.getLibPath());
-  std::string osLibDir = getOSLibDir(targetTriple);
+  std::string osLibDir = getOSLibDir(targetTriple).str();
   if (!driver.sysRoot().empty())
     osLibDir = driver.sysRoot() + "/" + osLibDir;
   addIfPathExists(fpaths, llvm::Twine(gccDetector_.getParentLibPath() +