r180783 - Always use / when computing mips specific paths.

Rafael Espindola rafael.espindola at gmail.com
Tue Apr 30 05:24:40 PDT 2013


Author: rafael
Date: Tue Apr 30 07:24:40 2013
New Revision: 180783

URL: http://llvm.org/viewvc/llvm-project?rev=180783&view=rev
Log:
Always use / when computing mips specific paths.

We were getting paths with both / and \ in them. This should fix mips-cs-ld.c
on the windows bots.

Modified:
    cfe/trunk/lib/Driver/ToolChains.cpp

Modified: cfe/trunk/lib/Driver/ToolChains.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=180783&r1=180782&r2=180783&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)
+++ cfe/trunk/lib/Driver/ToolChains.cpp Tue Apr 30 07:24:40 2013
@@ -1298,20 +1298,20 @@ static bool hasMipsN32ABIArg(const ArgLi
   return A && (A->getValue() == StringRef("n32"));
 }
 
-static void appendMipsTargetSuffix(SmallVectorImpl<char> &Path,
+static void appendMipsTargetSuffix(std::string &Path,
                                    llvm::Triple::ArchType TargetArch,
                                    const ArgList &Args) {
   if (isMips16(Args))
-    llvm::sys::path::append(Path, "/mips16");
+    Path += "/mips16";
   else if (isMicroMips(Args))
-    llvm::sys::path::append(Path, "/micromips");
+    Path += "/micromips";
 
   if (isSoftFloatABI(Args))
-    llvm::sys::path::append(Path, "/soft-float");
+    Path += "/soft-float";
 
   if (TargetArch == llvm::Triple::mipsel ||
       TargetArch == llvm::Triple::mips64el)
-    llvm::sys::path::append(Path, "/el");
+    Path += "/el";
 }
 
 static StringRef getMipsTargetABISuffix(llvm::Triple::ArchType TargetArch,
@@ -1323,7 +1323,7 @@ static StringRef getMipsTargetABISuffix(
   return "/32";
 }
 
-static bool findTargetMultiarchSuffix(SmallString<32> &Suffix,
+static bool findTargetMultiarchSuffix(std::string &Suffix,
                                       StringRef Path,
                                       llvm::Triple::ArchType TargetArch,
                                       const ArgList &Args) {
@@ -1337,15 +1337,15 @@ static bool findTargetMultiarchSuffix(Sm
 
     if (TargetArch == llvm::Triple::mips64 ||
         TargetArch == llvm::Triple::mips64el)
-      llvm::sys::path::append(Suffix, ABISuffix);
+      Suffix += ABISuffix;
 
-    if (llvm::sys::fs::exists(Path + Suffix.str() + "/crtbegin.o"))
+    if (llvm::sys::fs::exists(Path + Suffix + "/crtbegin.o"))
       return true;
 
     // Then fall back and probe a simple case like
     // mips-linux-gnu/4.7/32/crtbegin.o
     Suffix = ABISuffix;
-    return llvm::sys::fs::exists(Path + Suffix.str() + "/crtbegin.o");
+    return llvm::sys::fs::exists(Path + Suffix + "/crtbegin.o");
   }
 
   if (TargetArch == llvm::Triple::x86_64 ||
@@ -1354,7 +1354,7 @@ static bool findTargetMultiarchSuffix(Sm
   else
     Suffix = "/32";
 
-  return llvm::sys::fs::exists(Path + Suffix.str() + "/crtbegin.o");
+  return llvm::sys::fs::exists(Path + Suffix + "/crtbegin.o");
 }
 
 void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple(
@@ -1407,10 +1407,10 @@ void Generic_GCC::GCCInstallationDetecto
       // we use that. If not, and if not a multiarch triple, we look for
       // crtbegin.o without the subdirectory.
 
-      SmallString<32> MultiarchSuffix;
+      std::string MultiarchSuffix;
       if (findTargetMultiarchSuffix(MultiarchSuffix,
                                     LI->path(), TargetArch, Args)) {
-        GCCMultiarchSuffix = MultiarchSuffix.str();
+        GCCMultiarchSuffix = MultiarchSuffix;
       } else {
         if (NeedsMultiarchSuffix ||
             !llvm::sys::fs::exists(LI->path() + "/crtbegin.o"))
@@ -2295,10 +2295,10 @@ Linux::Linux(const Driver &D, const llvm
     // Sourcery CodeBench MIPS toolchain holds some libraries under
     // the parent prefix of the GCC installation.
     if (IsMips) {
-      SmallString<128> Suffix;
+      std::string Suffix;
       appendMipsTargetSuffix(Suffix, Arch, Args);
       addPathIfExists(LibPath + "/../" + GCCTriple.str() + "/lib/../" +
-                      Multilib + Suffix.str(),
+                      Multilib + Suffix,
                       Paths);
     }
   }
@@ -2363,14 +2363,12 @@ std::string Linux::computeSysRoot(const
   if (!GCCInstallation.isValid() || !isMipsArch(getTriple().getArch()))
     return std::string();
 
-  SmallString<128> Path;
-  llvm::sys::path::append(Path, GCCInstallation.getInstallPath(),
-                                "../../../..",
-                                GCCInstallation.getTriple().str(),
-                                "libc");
+  std::string Path =
+    (GCCInstallation.getInstallPath() +
+     "/../../../../" + GCCInstallation.getTriple().str() + "/libc").str();
   appendMipsTargetSuffix(Path, getTriple().getArch(), Args);
 
-  return llvm::sys::fs::exists(Path.str()) ? Path.str() : "";
+  return llvm::sys::fs::exists(Path) ? Path : "";
 }
 
 void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,





More information about the cfe-commits mailing list