diff --git a/clang/lib/Driver/ToolChains.cpp b/clang/lib/Driver/ToolChains.cpp index 533e4f821cddc4c64db7b90eb013b5e354ae138a..44f51e4c5d5ae1deba3b7a1ae61d765a9c65ecf9 100644 --- a/clang/lib/Driver/ToolChains.cpp +++ b/clang/lib/Driver/ToolChains.cpp @@ -1622,23 +1622,19 @@ Tool &OpenBSD::SelectTool(const Compilation &C, const JobAction &JA, return *T; } -static void addPathIfExists(Twine Path, ToolChain::path_list &Paths) { - if (llvm::sys::fs::exists(Path)) Paths.push_back(Path.str()); -} - /// FreeBSD - FreeBSD tool chain which can call as(1) and ld(1) directly. FreeBSD::FreeBSD(const Driver &D, const llvm::Triple& Triple) : Generic_ELF(D, Triple) { - // When targeting 32-bit platforms, look for libraries in '/usr/lib32' first; - // for 64-bit hosts that's where they will live. We fall back to '/usr/lib' - // for the remaining cases. - if (Triple.getArch() == llvm::Triple::x86 || - Triple.getArch() == llvm::Triple::ppc) - addPathIfExists(getDriver().SysRoot + "/usr/lib32", getFilePaths()); - - addPathIfExists(getDriver().SysRoot + "/usr/lib", getFilePaths()); + // When targeting 32-bit platforms, look for '/usr/lib32' first and fall back + // to '/usr/lib' for the remaining cases. + if ((Triple.getArch() == llvm::Triple::x86 || + Triple.getArch() == llvm::Triple::ppc) && + llvm::sys::fs::exists(getDriver().SysRoot + "/usr/lib32")) + getFilePaths().push_back(getDriver().SysRoot + "/usr/lib32"); + else + getFilePaths().push_back(getDriver().SysRoot + "/usr/lib"); } Tool &FreeBSD::SelectTool(const Compilation &C, const JobAction &JA, @@ -1968,6 +1964,10 @@ static std::string getMultiarchTriple(const llvm::Triple TargetTriple, } } +static void addPathIfExists(Twine Path, ToolChain::path_list &Paths) { + if (llvm::sys::fs::exists(Path)) Paths.push_back(Path.str()); +} + Linux::Linux(const Driver &D, const llvm::Triple &Triple) : Generic_ELF(D, Triple) { llvm::Triple::ArchType Arch = Triple.getArch();