diff options
Diffstat (limited to 'clang/lib/Driver/ToolChain.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChain.cpp | 52 |
1 files changed, 22 insertions, 30 deletions
diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index e5e17a5659c..d9ed5412fdb 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -267,52 +267,46 @@ Tool *ToolChain::getTool(Action::ActionClass AC) const { llvm_unreachable("Invalid tool kind."); } -static StringRef -getArchNameForCompilerRTLib(const ToolChain &TC, - const llvm::Triple &EffectiveTriple, - const ArgList &Args) { - bool IsWindows = EffectiveTriple.isOSWindows(); - - if (EffectiveTriple.isWindowsMSVCEnvironment() && - TC.getArch() == llvm::Triple::x86) +static StringRef getArchNameForCompilerRTLib(const ToolChain &TC, + const ArgList &Args) { + const llvm::Triple &Triple = TC.getTriple(); + bool IsWindows = Triple.isOSWindows(); + + if (Triple.isWindowsMSVCEnvironment() && TC.getArch() == llvm::Triple::x86) return "i386"; if (TC.getArch() == llvm::Triple::arm || TC.getArch() == llvm::Triple::armeb) - return (arm::getARMFloatABI(TC, EffectiveTriple, Args) == - arm::FloatABI::Hard && - !IsWindows) + return (arm::getARMFloatABI(TC, Args) == arm::FloatABI::Hard && !IsWindows) ? "armhf" : "arm"; return TC.getArchName(); } -std::string ToolChain::getCompilerRT(const llvm::Triple &EffectiveTriple, - const ArgList &Args, StringRef Component, +std::string ToolChain::getCompilerRT(const ArgList &Args, StringRef Component, bool Shared) const { - const char *Env = EffectiveTriple.isAndroid() ? "-android" : ""; - bool IsITANMSVCWindows = EffectiveTriple.isWindowsMSVCEnvironment() || - EffectiveTriple.isWindowsItaniumEnvironment(); + const llvm::Triple &TT = getTriple(); + const char *Env = TT.isAndroid() ? "-android" : ""; + bool IsITANMSVCWindows = + TT.isWindowsMSVCEnvironment() || TT.isWindowsItaniumEnvironment(); - StringRef Arch = getArchNameForCompilerRTLib(*this, EffectiveTriple, Args); + StringRef Arch = getArchNameForCompilerRTLib(*this, Args); const char *Prefix = IsITANMSVCWindows ? "" : "lib"; - const char *Suffix = Shared ? (EffectiveTriple.isOSWindows() ? ".dll" : ".so") + const char *Suffix = Shared ? (Triple.isOSWindows() ? ".dll" : ".so") : (IsITANMSVCWindows ? ".lib" : ".a"); SmallString<128> Path(getDriver().ResourceDir); - StringRef OSLibName = EffectiveTriple.isOSFreeBSD() ? "freebsd" : getOS(); + StringRef OSLibName = Triple.isOSFreeBSD() ? "freebsd" : getOS(); llvm::sys::path::append(Path, "lib", OSLibName); llvm::sys::path::append(Path, Prefix + Twine("clang_rt.") + Component + "-" + Arch + Env + Suffix); return Path.str(); } -const char * -ToolChain::getCompilerRTArgString(const llvm::Triple &EffectiveTriple, - const llvm::opt::ArgList &Args, - StringRef Component, bool Shared) const { - return Args.MakeArgString( - getCompilerRT(EffectiveTriple, Args, Component, Shared)); +const char *ToolChain::getCompilerRTArgString(const llvm::opt::ArgList &Args, + StringRef Component, + bool Shared) const { + return Args.MakeArgString(getCompilerRT(Args, Component, Shared)); } bool ToolChain::needsProfileRT(const ArgList &Args) { @@ -525,13 +519,11 @@ void ToolChain::addClangTargetOptions(const ArgList &DriverArgs, void ToolChain::addClangWarningOptions(ArgStringList &CC1Args) const {} -void ToolChain::addProfileRTLibs(const llvm::Triple &EffectiveTriple, - const llvm::opt::ArgList &Args, +void ToolChain::addProfileRTLibs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs) const { - if (!needsProfileRT(Args)) - return; + if (!needsProfileRT(Args)) return; - CmdArgs.push_back(getCompilerRTArgString(EffectiveTriple, Args, "profile")); + CmdArgs.push_back(getCompilerRTArgString(Args, "profile")); } ToolChain::RuntimeLibType ToolChain::GetRuntimeLibType( |