aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorVedant Kumar <vsk@apple.com>2016-07-27 23:01:55 +0000
committerVedant Kumar <vsk@apple.com>2016-07-27 23:01:55 +0000
commit5fb00e4bd7c8f767a18377c91c99dacc2f74089f (patch)
tree9d7d30229e515a2f695d0b0505eca88e0f541abd /clang/lib/Driver/Tools.cpp
parent436f7d660625d45a306977c31577ac62820df3e3 (diff)
downloadllvm-5fb00e4bd7c8f767a18377c91c99dacc2f74089f.zip
llvm-5fb00e4bd7c8f767a18377c91c99dacc2f74089f.tar.gz
llvm-5fb00e4bd7c8f767a18377c91c99dacc2f74089f.tar.bz2
Revert "[Driver] Compute effective target triples once per job (NFCI)"
This reverts commit r275895 in order to address some post-commit review feedback from Eric Christopher (see: the list thread for r275895). llvm-svn: 276936
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp313
1 files changed, 126 insertions, 187 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 265268d..61d4149 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -762,11 +762,10 @@ static bool useAAPCSForMachO(const llvm::Triple &T) {
// Select the float ABI as determined by -msoft-float, -mhard-float, and
// -mfloat-abi=.
-arm::FloatABI arm::getARMFloatABI(const ToolChain &TC,
- const llvm::Triple &EffectiveTriple,
- const ArgList &Args) {
+arm::FloatABI arm::getARMFloatABI(const ToolChain &TC, const ArgList &Args) {
const Driver &D = TC.getDriver();
- auto SubArch = getARMSubArchVersionNumber(EffectiveTriple);
+ const llvm::Triple Triple(TC.ComputeEffectiveClangTriple(Args));
+ auto SubArch = getARMSubArchVersionNumber(Triple);
arm::FloatABI ABI = FloatABI::Invalid;
if (Arg *A =
Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float,
@@ -789,23 +788,23 @@ arm::FloatABI arm::getARMFloatABI(const ToolChain &TC,
// It is incorrect to select hard float ABI on MachO platforms if the ABI is
// "apcs-gnu".
- if (EffectiveTriple.isOSBinFormatMachO() &&
- !useAAPCSForMachO(EffectiveTriple) && ABI == FloatABI::Hard) {
- D.Diag(diag::err_drv_unsupported_opt_for_target)
- << A->getAsString(Args) << EffectiveTriple.getArchName();
+ if (Triple.isOSBinFormatMachO() && !useAAPCSForMachO(Triple) &&
+ ABI == FloatABI::Hard) {
+ D.Diag(diag::err_drv_unsupported_opt_for_target) << A->getAsString(Args)
+ << Triple.getArchName();
}
}
// If unspecified, choose the default based on the platform.
if (ABI == FloatABI::Invalid) {
- switch (EffectiveTriple.getOS()) {
+ switch (Triple.getOS()) {
case llvm::Triple::Darwin:
case llvm::Triple::MacOSX:
case llvm::Triple::IOS:
case llvm::Triple::TvOS: {
// Darwin defaults to "softfp" for v6 and v7.
ABI = (SubArch == 6 || SubArch == 7) ? FloatABI::SoftFP : FloatABI::Soft;
- ABI = EffectiveTriple.isWatchABI() ? FloatABI::Hard : ABI;
+ ABI = Triple.isWatchABI() ? FloatABI::Hard : ABI;
break;
}
case llvm::Triple::WatchOS:
@@ -818,7 +817,7 @@ arm::FloatABI arm::getARMFloatABI(const ToolChain &TC,
break;
case llvm::Triple::FreeBSD:
- switch (EffectiveTriple.getEnvironment()) {
+ switch (Triple.getEnvironment()) {
case llvm::Triple::GNUEABIHF:
ABI = FloatABI::Hard;
break;
@@ -830,7 +829,7 @@ arm::FloatABI arm::getARMFloatABI(const ToolChain &TC,
break;
default:
- switch (EffectiveTriple.getEnvironment()) {
+ switch (Triple.getEnvironment()) {
case llvm::Triple::GNUEABIHF:
case llvm::Triple::MuslEABIHF:
case llvm::Triple::EABIHF:
@@ -847,14 +846,14 @@ arm::FloatABI arm::getARMFloatABI(const ToolChain &TC,
break;
default:
// Assume "soft", but warn the user we are guessing.
- if (EffectiveTriple.isOSBinFormatMachO() &&
- EffectiveTriple.getSubArch() == llvm::Triple::ARMSubArch_v7em)
+ if (Triple.isOSBinFormatMachO() &&
+ Triple.getSubArch() == llvm::Triple::ARMSubArch_v7em)
ABI = FloatABI::Hard;
else
ABI = FloatABI::Soft;
- if (EffectiveTriple.getOS() != llvm::Triple::UnknownOS ||
- !EffectiveTriple.isOSBinFormatMachO())
+ if (Triple.getOS() != llvm::Triple::UnknownOS ||
+ !Triple.isOSBinFormatMachO())
D.Diag(diag::warn_drv_assuming_mfloat_abi_is) << "soft";
break;
}
@@ -874,7 +873,7 @@ static void getARMTargetFeatures(const ToolChain &TC,
bool KernelOrKext =
Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext);
- arm::FloatABI ABI = arm::getARMFloatABI(TC, Triple, Args);
+ arm::FloatABI ABI = arm::getARMFloatABI(TC, Args);
const Arg *WaCPU = nullptr, *WaFPU = nullptr;
const Arg *WaHDiv = nullptr, *WaArch = nullptr;
@@ -1003,7 +1002,7 @@ static void getARMTargetFeatures(const ToolChain &TC,
Features.push_back("+long-calls");
} else if (KernelOrKext && (!Triple.isiOS() || Triple.isOSVersionLT(6)) &&
!Triple.isWatchOS()) {
- Features.push_back("+long-calls");
+ Features.push_back("+long-calls");
}
// Kernel code has more strict alignment requirements.
@@ -1017,8 +1016,7 @@ static void getARMTargetFeatures(const ToolChain &TC,
D.Diag(diag::err_target_unsupported_unaligned) << "v6m";
// v8M Baseline follows on from v6M, so doesn't support unaligned memory
// access either.
- else if (Triple.getSubArch() ==
- llvm::Triple::SubArchType::ARMSubArch_v8m_baseline)
+ else if (Triple.getSubArch() == llvm::Triple::SubArchType::ARMSubArch_v8m_baseline)
D.Diag(diag::err_target_unsupported_unaligned) << "v8m.base";
} else
Features.push_back("+strict-align");
@@ -1104,7 +1102,7 @@ void Clang::AddARMTargetArgs(const llvm::Triple &Triple, const ArgList &Args,
CmdArgs.push_back(ABIName);
// Determine floating point ABI from the options & target defaults.
- arm::FloatABI ABI = arm::getARMFloatABI(getToolChain(), Triple, Args);
+ arm::FloatABI ABI = arm::getARMFloatABI(getToolChain(), Args);
if (ABI == arm::FloatABI::Soft) {
// Floating point operations and argument passing are soft.
// FIXME: This changes CPP defines, we need -target-soft-float.
@@ -1165,9 +1163,11 @@ static std::string getAArch64TargetCPU(const ArgList &Args) {
return "generic";
}
-void Clang::AddAArch64TargetArgs(const llvm::Triple &EffectiveTriple,
- const ArgList &Args,
+void Clang::AddAArch64TargetArgs(const ArgList &Args,
ArgStringList &CmdArgs) const {
+ std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
+ llvm::Triple Triple(TripleStr);
+
if (!Args.hasFlag(options::OPT_mred_zone, options::OPT_mno_red_zone, true) ||
Args.hasArg(options::OPT_mkernel) ||
Args.hasArg(options::OPT_fapple_kext))
@@ -1180,7 +1180,7 @@ void Clang::AddAArch64TargetArgs(const llvm::Triple &EffectiveTriple,
const char *ABIName = nullptr;
if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
ABIName = A->getValue();
- else if (EffectiveTriple.isOSDarwin())
+ else if (Triple.isOSDarwin())
ABIName = "darwinpcs";
else
ABIName = "aapcs";
@@ -1195,7 +1195,7 @@ void Clang::AddAArch64TargetArgs(const llvm::Triple &EffectiveTriple,
CmdArgs.push_back("-aarch64-fix-cortex-a53-835769=1");
else
CmdArgs.push_back("-aarch64-fix-cortex-a53-835769=0");
- } else if (EffectiveTriple.isAndroid()) {
+ } else if (Triple.isAndroid()) {
// Enabled A53 errata (835769) workaround by default on android
CmdArgs.push_back("-backend-option");
CmdArgs.push_back("-aarch64-fix-cortex-a53-835769=1");
@@ -3011,10 +3011,9 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
// This adds the static libclang_rt.builtins-arch.a directly to the command line
// FIXME: Make sure we can also emit shared objects if they're requested
// and available, check for possible errors, etc.
-static void addClangRT(const ToolChain &TC, const llvm::Triple &EffectiveTriple,
- const ArgList &Args, ArgStringList &CmdArgs) {
- CmdArgs.push_back(
- TC.getCompilerRTArgString(EffectiveTriple, Args, "builtins"));
+static void addClangRT(const ToolChain &TC, const ArgList &Args,
+ ArgStringList &CmdArgs) {
+ CmdArgs.push_back(TC.getCompilerRTArgString(Args, "builtins"));
}
namespace {
@@ -3088,27 +3087,22 @@ static void addOpenMPRuntime(ArgStringList &CmdArgs, const ToolChain &TC,
}
}
-static void addSanitizerRuntime(const ToolChain &TC,
- const llvm::Triple &EffectiveTriple,
- const ArgList &Args, ArgStringList &CmdArgs,
- StringRef Sanitizer, bool IsShared,
- bool IsWhole) {
+static void addSanitizerRuntime(const ToolChain &TC, const ArgList &Args,
+ ArgStringList &CmdArgs, StringRef Sanitizer,
+ bool IsShared, bool IsWhole) {
// Wrap any static runtimes that must be forced into executable in
// whole-archive.
if (IsWhole) CmdArgs.push_back("-whole-archive");
- CmdArgs.push_back(
- TC.getCompilerRTArgString(EffectiveTriple, Args, Sanitizer, IsShared));
- if (IsWhole)
- CmdArgs.push_back("-no-whole-archive");
+ CmdArgs.push_back(TC.getCompilerRTArgString(Args, Sanitizer, IsShared));
+ if (IsWhole) CmdArgs.push_back("-no-whole-archive");
}
// Tries to use a file with the list of dynamic symbols that need to be exported
// from the runtime library. Returns true if the file was found.
-static bool addSanitizerDynamicList(const ToolChain &TC,
- const llvm::Triple &EffectiveTriple,
- const ArgList &Args, ArgStringList &CmdArgs,
+static bool addSanitizerDynamicList(const ToolChain &TC, const ArgList &Args,
+ ArgStringList &CmdArgs,
StringRef Sanitizer) {
- SmallString<128> SanRT(TC.getCompilerRT(EffectiveTriple, Args, Sanitizer));
+ SmallString<128> SanRT(TC.getCompilerRT(Args, Sanitizer));
if (llvm::sys::fs::exists(SanRT + ".syms")) {
CmdArgs.push_back(Args.MakeArgString("--dynamic-list=" + SanRT + ".syms"));
return true;
@@ -3197,28 +3191,25 @@ collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
// Should be called before we add system libraries (C++ ABI, libstdc++/libc++,
// C runtime, etc). Returns true if sanitizer system deps need to be linked in.
-static bool addSanitizerRuntimes(const ToolChain &TC,
- const llvm::Triple &EffectiveTriple,
- const ArgList &Args, ArgStringList &CmdArgs) {
+static bool addSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
+ ArgStringList &CmdArgs) {
SmallVector<StringRef, 4> SharedRuntimes, StaticRuntimes,
NonWholeStaticRuntimes, HelperStaticRuntimes, RequiredSymbols;
collectSanitizerRuntimes(TC, Args, SharedRuntimes, StaticRuntimes,
NonWholeStaticRuntimes, HelperStaticRuntimes,
RequiredSymbols);
for (auto RT : SharedRuntimes)
- addSanitizerRuntime(TC, EffectiveTriple, Args, CmdArgs, RT, true, false);
+ addSanitizerRuntime(TC, Args, CmdArgs, RT, true, false);
for (auto RT : HelperStaticRuntimes)
- addSanitizerRuntime(TC, EffectiveTriple, Args, CmdArgs, RT, false, true);
+ addSanitizerRuntime(TC, Args, CmdArgs, RT, false, true);
bool AddExportDynamic = false;
for (auto RT : StaticRuntimes) {
- addSanitizerRuntime(TC, EffectiveTriple, Args, CmdArgs, RT, false, true);
- AddExportDynamic |=
- !addSanitizerDynamicList(TC, EffectiveTriple, Args, CmdArgs, RT);
+ addSanitizerRuntime(TC, Args, CmdArgs, RT, false, true);
+ AddExportDynamic |= !addSanitizerDynamicList(TC, Args, CmdArgs, RT);
}
for (auto RT : NonWholeStaticRuntimes) {
- addSanitizerRuntime(TC, EffectiveTriple, Args, CmdArgs, RT, false, false);
- AddExportDynamic |=
- !addSanitizerDynamicList(TC, EffectiveTriple, Args, CmdArgs, RT);
+ addSanitizerRuntime(TC, Args, CmdArgs, RT, false, false);
+ AddExportDynamic |= !addSanitizerDynamicList(TC, Args, CmdArgs, RT);
}
for (auto S : RequiredSymbols) {
CmdArgs.push_back("-u");
@@ -3231,14 +3222,12 @@ static bool addSanitizerRuntimes(const ToolChain &TC,
return !StaticRuntimes.empty();
}
-static bool addXRayRuntime(const ToolChain &TC,
- const llvm::Triple &EffectiveTriple,
- const ArgList &Args, ArgStringList &CmdArgs) {
+static bool addXRayRuntime(const ToolChain &TC, const ArgList &Args,
+ ArgStringList &CmdArgs) {
if (Args.hasFlag(options::OPT_fxray_instrument,
options::OPT_fnoxray_instrument, false)) {
CmdArgs.push_back("-whole-archive");
- CmdArgs.push_back(
- TC.getCompilerRTArgString(EffectiveTriple, Args, "xray", false));
+ CmdArgs.push_back(TC.getCompilerRTArgString(Args, "xray", false));
CmdArgs.push_back("-no-whole-archive");
return true;
}
@@ -3848,9 +3837,9 @@ static void AddAssemblerKPIC(const ToolChain &ToolChain, const ArgList &Args,
void Clang::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output, const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args, const char *LinkingOutput) const {
- std::string TripleStr = EffectiveTriple.str();
+ std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
+ const llvm::Triple Triple(TripleStr);
bool KernelOrKext =
Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext);
@@ -3903,14 +3892,13 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(Args.MakeArgString(NormalizedTriple));
}
- if (EffectiveTriple.isOSWindows() &&
- (EffectiveTriple.getArch() == llvm::Triple::arm ||
- EffectiveTriple.getArch() == llvm::Triple::thumb)) {
- unsigned Offset = EffectiveTriple.getArch() == llvm::Triple::arm ? 4 : 6;
+ if (Triple.isOSWindows() && (Triple.getArch() == llvm::Triple::arm ||
+ Triple.getArch() == llvm::Triple::thumb)) {
+ unsigned Offset = Triple.getArch() == llvm::Triple::arm ? 4 : 6;
unsigned Version;
- EffectiveTriple.getArchName().substr(Offset).getAsInteger(10, Version);
+ Triple.getArchName().substr(Offset).getAsInteger(10, Version);
if (Version < 7)
- D.Diag(diag::err_target_unsupported_arch) << EffectiveTriple.getArchName()
+ D.Diag(diag::err_target_unsupported_arch) << Triple.getArchName()
<< TripleStr;
}
@@ -4112,7 +4100,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
unsigned PICLevel;
bool IsPIE;
std::tie(RelocationModel, PICLevel, IsPIE) =
- ParsePICArgs(getToolChain(), EffectiveTriple, Args);
+ ParsePICArgs(getToolChain(), Triple, Args);
const char *RMName = RelocationModelName(RelocationModel);
if (RMName) {
@@ -4215,7 +4203,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
false))
CmdArgs.push_back("-fstrict-enums");
if (Args.hasFlag(options::OPT_fstrict_vtable_pointers,
- options::OPT_fno_strict_vtable_pointers, false))
+ options::OPT_fno_strict_vtable_pointers,
+ false))
CmdArgs.push_back("-fstrict-vtable-pointers");
if (!Args.hasFlag(options::OPT_foptimize_sibling_calls,
options::OPT_fno_optimize_sibling_calls))
@@ -4430,7 +4419,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
}
// Add the target cpu
- std::string CPU = getCPUName(Args, EffectiveTriple, /*FromAs*/ false);
+ std::string CPU = getCPUName(Args, Triple, /*FromAs*/ false);
if (!CPU.empty()) {
CmdArgs.push_back("-target-cpu");
CmdArgs.push_back(Args.MakeArgString(CPU));
@@ -4442,7 +4431,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
}
// Add the target features
- getTargetFeatures(getToolChain(), EffectiveTriple, Args, CmdArgs, false);
+ getTargetFeatures(getToolChain(), Triple, Args, CmdArgs, false);
// Add target specific flags.
switch (getToolChain().getArch()) {
@@ -4454,12 +4443,12 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
case llvm::Triple::thumb:
case llvm::Triple::thumbeb:
// Use the effective triple, which takes into account the deployment target.
- AddARMTargetArgs(EffectiveTriple, Args, CmdArgs, KernelOrKext);
+ AddARMTargetArgs(Triple, Args, CmdArgs, KernelOrKext);
break;
case llvm::Triple::aarch64:
case llvm::Triple::aarch64_be:
- AddAArch64TargetArgs(EffectiveTriple, Args, CmdArgs);
+ AddAArch64TargetArgs(Args, CmdArgs);
break;
case llvm::Triple::mips:
@@ -4580,8 +4569,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
}
// If a debugger tuning argument appeared, remember it.
- if (Arg *A =
- Args.getLastArg(options::OPT_gTune_Group, options::OPT_ggdbN_Group)) {
+ if (Arg *A = Args.getLastArg(options::OPT_gTune_Group,
+ options::OPT_ggdbN_Group)) {
if (A->getOption().matches(options::OPT_glldb))
DebuggerTuning = llvm::DebuggerKind::LLDB;
else if (A->getOption().matches(options::OPT_gsce))
@@ -4610,7 +4599,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
// PS4 defaults to no column info
if (Args.hasFlag(options::OPT_gcolumn_info, options::OPT_gno_column_info,
- /*Default=*/!IsPS4CPU))
+ /*Default=*/ !IsPS4CPU))
CmdArgs.push_back("-dwarf-column-info");
// FIXME: Move backend command line options to the module.
@@ -4664,10 +4653,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
// CloudABI and WebAssembly use -ffunction-sections and -fdata-sections by
// default.
- bool UseSeparateSections =
- EffectiveTriple.getOS() == llvm::Triple::CloudABI ||
- EffectiveTriple.getArch() == llvm::Triple::wasm32 ||
- EffectiveTriple.getArch() == llvm::Triple::wasm64;
+ bool UseSeparateSections = Triple.getOS() == llvm::Triple::CloudABI ||
+ Triple.getArch() == llvm::Triple::wasm32 ||
+ Triple.getArch() == llvm::Triple::wasm64;
if (Args.hasFlag(options::OPT_ffunction_sections,
options::OPT_fno_function_sections, UseSeparateSections)) {
@@ -5036,8 +5024,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
Args.AddLastArg(CmdArgs, options::OPT_fno_operator_names);
// Emulated TLS is enabled by default on Android, and can be enabled manually
// with -femulated-tls.
- bool EmulatedTLSDefault = EffectiveTriple.isAndroid() ||
- EffectiveTriple.isWindowsCygwinEnvironment();
+ bool EmulatedTLSDefault = Triple.isAndroid() || Triple.isWindowsCygwinEnvironment();
if (Args.hasFlag(options::OPT_femulated_tls, options::OPT_fno_emulated_tls,
EmulatedTLSDefault))
CmdArgs.push_back("-femulated-tls");
@@ -5078,7 +5065,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
}
const SanitizerArgs &Sanitize = getToolChain().getSanitizerArgs();
- Sanitize.addArgs(getToolChain(), EffectiveTriple, Args, CmdArgs, InputType);
+ Sanitize.addArgs(getToolChain(), Args, CmdArgs, InputType);
// Report an error for -faltivec on anything other than PowerPC.
if (const Arg *A = Args.getLastArg(options::OPT_faltivec)) {
@@ -5220,9 +5207,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("-backend-option");
CmdArgs.push_back("-arm-no-restrict-it");
}
- } else if (EffectiveTriple.isOSWindows() &&
- (EffectiveTriple.getArch() == llvm::Triple::arm ||
- EffectiveTriple.getArch() == llvm::Triple::thumb)) {
+ } else if (Triple.isOSWindows() &&
+ (Triple.getArch() == llvm::Triple::arm ||
+ Triple.getArch() == llvm::Triple::thumb)) {
// Windows on ARM expects restricted IT blocks
CmdArgs.push_back("-backend-option");
CmdArgs.push_back("-arm-restrict-it");
@@ -5576,7 +5563,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
if (Args.hasArg(options::OPT_fno_inline))
CmdArgs.push_back("-fno-inline");
- if (Arg *InlineArg = Args.getLastArg(options::OPT_finline_functions,
+ if (Arg* InlineArg = Args.getLastArg(options::OPT_finline_functions,
options::OPT_finline_hint_functions,
options::OPT_fno_inline_functions))
InlineArg->render(Args, CmdArgs);
@@ -5638,6 +5625,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
options::OPT_fno_objc_arc_exceptions,
/*default*/ types::isCXX(InputType)))
CmdArgs.push_back("-fobjc-arc-exceptions");
+
}
// -fobjc-infer-related-result-type is the default, except in the Objective-C
@@ -5663,8 +5651,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
// Pass down -fobjc-weak or -fno-objc-weak if present.
if (types::isObjC(InputType)) {
- auto WeakArg =
- Args.getLastArg(options::OPT_fobjc_weak, options::OPT_fno_objc_weak);
+ auto WeakArg = Args.getLastArg(options::OPT_fobjc_weak,
+ options::OPT_fno_objc_weak);
if (!WeakArg) {
// nothing to do
} else if (GCArg) {
@@ -5834,7 +5822,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
StringRef Value(A->getValue());
if (Value != "always" && Value != "never" && Value != "auto")
getToolChain().getDriver().Diag(diag::err_drv_clang_unsupported)
- << ("-fdiagnostics-color=" + Value).str();
+ << ("-fdiagnostics-color=" + Value).str();
}
A->claim();
}
@@ -6505,7 +6493,6 @@ void ClangAs::AddX86TargetArgs(const ArgList &Args,
void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output, const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
@@ -6513,7 +6500,9 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
assert(Inputs.size() == 1 && "Unexpected number of inputs.");
const InputInfo &Input = Inputs[0];
- std::string TripleStr = EffectiveTriple.str();
+ std::string TripleStr =
+ getToolChain().ComputeEffectiveClangTriple(Args, Input.getType());
+ const llvm::Triple Triple(TripleStr);
// Don't warn about "clang -w -c foo.s"
Args.ClaimAllArgs(options::OPT_w);
@@ -6542,14 +6531,14 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(Clang::getBaseInputName(Args, Input));
// Add the target cpu
- std::string CPU = getCPUName(Args, EffectiveTriple, /*FromAs*/ true);
+ std::string CPU = getCPUName(Args, Triple, /*FromAs*/ true);
if (!CPU.empty()) {
CmdArgs.push_back("-target-cpu");
CmdArgs.push_back(Args.MakeArgString(CPU));
}
// Add the target features
- getTargetFeatures(getToolChain(), EffectiveTriple, Args, CmdArgs, true);
+ getTargetFeatures(getToolChain(), Triple, Args, CmdArgs, true);
// Ignore explicit -force_cpusubtype_ALL option.
(void)Args.hasArg(options::OPT_force__cpusubtype__ALL);
@@ -6608,7 +6597,7 @@ void ClangAs::ConstructJob(Compilation &C, const JobAction &JA,
unsigned PICLevel;
bool IsPIE;
std::tie(RelocationModel, PICLevel, IsPIE) =
- ParsePICArgs(getToolChain(), EffectiveTriple, Args);
+ ParsePICArgs(getToolChain(), Triple, Args);
const char *RMName = RelocationModelName(RelocationModel);
if (RMName) {
@@ -6691,9 +6680,7 @@ void GnuTool::anchor() {}
void gcc::Common::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
- const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
- const ArgList &Args,
+ const InputInfoList &Inputs, const ArgList &Args,
const char *LinkingOutput) const {
const Driver &D = getToolChain().getDriver();
ArgStringList CmdArgs;
@@ -6860,7 +6847,6 @@ void hexagon::Assembler::RenderExtraToolArgs(const JobAction &JA,
void hexagon::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -7104,7 +7090,6 @@ constructHexagonLinkArgs(Compilation &C, const JobAction &JA,
void hexagon::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
auto &HTC = static_cast<const toolchains::HexagonToolChain&>(getToolChain());
@@ -7122,7 +7107,6 @@ void hexagon::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void amdgpu::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
@@ -7151,7 +7135,6 @@ bool wasm::Linker::hasIntegratedCPP() const {
void wasm::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
@@ -7227,8 +7210,7 @@ const std::string arm::getARMArch(StringRef Arch, const llvm::Triple &Triple) {
std::string CPU = llvm::sys::getHostCPUName();
if (CPU != "generic") {
// Translate the native cpu into the architecture suffix for that CPU.
- StringRef Suffix =
- arm::getLLVMArchSuffixForARM(CPU, MArch, Triple);
+ StringRef Suffix = arm::getLLVMArchSuffixForARM(CPU, MArch, Triple);
// If there is no valid architecture suffix for this CPU we don't know how
// to handle it, so return no architecture.
if (Suffix.empty())
@@ -7488,7 +7470,6 @@ const char *Clang::getDependencyFileName(const ArgList &Args,
void cloudabi::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const ToolChain &ToolChain = getToolChain();
@@ -7557,7 +7538,6 @@ void cloudabi::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void darwin::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
@@ -7855,7 +7835,6 @@ void darwin::Linker::AddLinkArgs(Compilation &C, const ArgList &Args,
void darwin::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
assert(Output.getType() == types::TY_Image && "Invalid linker output type.");
@@ -7957,7 +7936,7 @@ void darwin::Linker::ConstructJob(Compilation &C, const JobAction &JA,
if (Args.hasArg(options::OPT_fnested_functions))
CmdArgs.push_back("-allow_stack_execute");
- getMachOToolChain().addProfileRTLibs(EffectiveTriple, Args, CmdArgs);
+ getMachOToolChain().addProfileRTLibs(Args, CmdArgs);
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
if (getToolChain().getDriver().CCCIsCXX())
@@ -7966,7 +7945,7 @@ void darwin::Linker::ConstructJob(Compilation &C, const JobAction &JA,
// link_ssp spec is empty.
// Let the tool chain choose which runtime library to link.
- getMachOToolChain().AddLinkRuntimeLibArgs(EffectiveTriple, Args, CmdArgs);
+ getMachOToolChain().AddLinkRuntimeLibArgs(Args, CmdArgs);
}
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) {
@@ -7999,7 +7978,6 @@ void darwin::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void darwin::Lipo::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
@@ -8022,7 +8000,6 @@ void darwin::Lipo::ConstructJob(Compilation &C, const JobAction &JA,
void darwin::Dsymutil::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
@@ -8043,7 +8020,6 @@ void darwin::Dsymutil::ConstructJob(Compilation &C, const JobAction &JA,
void darwin::VerifyDebug::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
@@ -8067,7 +8043,6 @@ void darwin::VerifyDebug::ConstructJob(Compilation &C, const JobAction &JA,
void solaris::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -8088,7 +8063,6 @@ void solaris::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
@@ -8158,7 +8132,7 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA,
}
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o")));
- getToolChain().addProfileRTLibs(EffectiveTriple, Args, CmdArgs);
+ getToolChain().addProfileRTLibs(Args, CmdArgs);
const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath());
C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
@@ -8167,7 +8141,6 @@ void solaris::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void openbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -8239,7 +8212,6 @@ void openbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void openbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const Driver &D = getToolChain().getDriver();
@@ -8362,7 +8334,6 @@ void openbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void bitrig::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -8383,7 +8354,6 @@ void bitrig::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void bitrig::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const Driver &D = getToolChain().getDriver();
@@ -8493,7 +8463,6 @@ void bitrig::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -8543,8 +8512,7 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
case llvm::Triple::armeb:
case llvm::Triple::thumb:
case llvm::Triple::thumbeb: {
- arm::FloatABI ABI =
- arm::getARMFloatABI(getToolChain(), EffectiveTriple, Args);
+ arm::FloatABI ABI = arm::getARMFloatABI(getToolChain(), Args);
if (ABI == arm::FloatABI::Hard)
CmdArgs.push_back("-mfpu=vfp");
@@ -8588,7 +8556,6 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const toolchains::FreeBSD &ToolChain =
@@ -8703,8 +8670,7 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
if (D.isUsingLTO())
AddGoldPlugin(ToolChain, Args, CmdArgs, D.getLTOMode() == LTOK_Thin);
- bool NeedsSanitizerDeps =
- addSanitizerRuntimes(ToolChain, EffectiveTriple, Args, CmdArgs);
+ bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
@@ -8771,7 +8737,7 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
}
- ToolChain.addProfileRTLibs(EffectiveTriple, Args, CmdArgs);
+ ToolChain.addProfileRTLibs(Args, CmdArgs);
const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath());
C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
@@ -8780,7 +8746,6 @@ void freebsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void netbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -8864,7 +8829,6 @@ void netbsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void netbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const Driver &D = getToolChain().getDriver();
@@ -8914,7 +8878,9 @@ void netbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
break;
case llvm::Triple::armeb:
case llvm::Triple::thumbeb:
- arm::appendEBLinkFlags(Args, CmdArgs, EffectiveTriple);
+ arm::appendEBLinkFlags(
+ Args, CmdArgs,
+ llvm::Triple(getToolChain().ComputeEffectiveClangTriple(Args)));
CmdArgs.push_back("-m");
switch (getToolChain().getTriple().getEnvironment()) {
case llvm::Triple::EABI:
@@ -9065,7 +9031,7 @@ void netbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o")));
}
- getToolChain().addProfileRTLibs(EffectiveTriple, Args, CmdArgs);
+ getToolChain().addProfileRTLibs(Args, CmdArgs);
const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath());
C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
@@ -9074,18 +9040,20 @@ void netbsd::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void gnutools::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
+ std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
+ llvm::Triple Triple = llvm::Triple(TripleStr);
+
ArgStringList CmdArgs;
llvm::Reloc::Model RelocationModel;
unsigned PICLevel;
bool IsPIE;
std::tie(RelocationModel, PICLevel, IsPIE) =
- ParsePICArgs(getToolChain(), EffectiveTriple, Args);
+ ParsePICArgs(getToolChain(), Triple, Args);
switch (getToolChain().getArch()) {
default:
@@ -9148,7 +9116,7 @@ void gnutools::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
break;
}
- switch (arm::getARMFloatABI(getToolChain(), EffectiveTriple, Args)) {
+ switch (arm::getARMFloatABI(getToolChain(), Args)) {
case arm::FloatABI::Invalid: llvm_unreachable("must have an ABI!");
case arm::FloatABI::Soft:
CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=soft"));
@@ -9323,7 +9291,6 @@ static void AddLibgcc(const llvm::Triple &Triple, const Driver &D,
}
static void AddRunTimeLibs(const ToolChain &TC, const Driver &D,
- const llvm::Triple &EffectiveTriple,
ArgStringList &CmdArgs, const ArgList &Args) {
// Make use of compiler-rt if --rtlib option is used
ToolChain::RuntimeLibType RLT = TC.GetRuntimeLibType(Args);
@@ -9335,7 +9302,7 @@ static void AddRunTimeLibs(const ToolChain &TC, const Driver &D,
llvm_unreachable("unsupported OS");
case llvm::Triple::Win32:
case llvm::Triple::Linux:
- addClangRT(TC, EffectiveTriple, Args, CmdArgs);
+ addClangRT(TC, Args, CmdArgs);
break;
}
break;
@@ -9407,13 +9374,15 @@ static const char *getLDMOption(const llvm::Triple &T, const ArgList &Args) {
void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const toolchains::Linux &ToolChain =
static_cast<const toolchains::Linux &>(getToolChain());
const Driver &D = ToolChain.getDriver();
+ std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
+ llvm::Triple Triple = llvm::Triple(TripleStr);
+
const llvm::Triple::ArchType Arch = ToolChain.getArch();
const bool isAndroid = ToolChain.getTriple().isAndroid();
const bool IsIAMCU = ToolChain.getTriple().isOSIAMCU();
@@ -9455,7 +9424,7 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back("-s");
if (Arch == llvm::Triple::armeb || Arch == llvm::Triple::thumbeb)
- arm::appendEBLinkFlags(Args, CmdArgs, EffectiveTriple);
+ arm::appendEBLinkFlags(Args, CmdArgs, Triple);
for (const auto &Opt : ToolChain.ExtraOpts)
CmdArgs.push_back(Opt.c_str());
@@ -9541,13 +9510,11 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
CmdArgs.push_back("--no-demangle");
- bool NeedsSanitizerDeps =
- addSanitizerRuntimes(ToolChain, EffectiveTriple, Args, CmdArgs);
- bool NeedsXRayDeps =
- addXRayRuntime(ToolChain, EffectiveTriple, Args, CmdArgs);
+ bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
+ bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs);
AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
// The profile runtime also needs access to system libraries.
- getToolChain().addProfileRTLibs(EffectiveTriple, Args, CmdArgs);
+ getToolChain().addProfileRTLibs(Args, CmdArgs);
if (D.CCCIsCXX() &&
!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
@@ -9604,7 +9571,7 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
}
}
- AddRunTimeLibs(ToolChain, D, EffectiveTriple, CmdArgs, Args);
+ AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
if (WantPthread && !isAndroid)
CmdArgs.push_back("-lpthread");
@@ -9621,7 +9588,7 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
if (Args.hasArg(options::OPT_static))
CmdArgs.push_back("--end-group");
else
- AddRunTimeLibs(ToolChain, D, EffectiveTriple, CmdArgs, Args);
+ AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
// Add IAMCU specific libs (outside the group), if needed.
if (IsIAMCU) {
@@ -9657,7 +9624,6 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void nacltools::AssemblerARM::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const toolchains::NaClToolChain &ToolChain =
@@ -9667,8 +9633,8 @@ void nacltools::AssemblerARM::ConstructJob(Compilation &C, const JobAction &JA,
InputInfoList NewInputs;
NewInputs.push_back(NaClMacros);
NewInputs.append(Inputs.begin(), Inputs.end());
- gnutools::Assembler::ConstructJob(C, JA, Output, NewInputs, EffectiveTriple,
- Args, LinkingOutput);
+ gnutools::Assembler::ConstructJob(C, JA, Output, NewInputs, Args,
+ LinkingOutput);
}
// This is quite similar to gnutools::Linker::ConstructJob with changes that
@@ -9678,7 +9644,6 @@ void nacltools::AssemblerARM::ConstructJob(Compilation &C, const JobAction &JA,
void nacltools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
@@ -9827,7 +9792,6 @@ void nacltools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void minix::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -9848,7 +9812,6 @@ void minix::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void minix::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const Driver &D = getToolChain().getDriver();
@@ -9874,7 +9837,7 @@ void minix::Linker::ConstructJob(Compilation &C, const JobAction &JA,
AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
- getToolChain().addProfileRTLibs(EffectiveTriple, Args, CmdArgs);
+ getToolChain().addProfileRTLibs(Args, CmdArgs);
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
if (D.CCCIsCXX()) {
@@ -9904,7 +9867,6 @@ void minix::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void dragonfly::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -9930,7 +9892,6 @@ void dragonfly::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void dragonfly::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const Driver &D = getToolChain().getDriver();
@@ -10045,7 +10006,7 @@ void dragonfly::Linker::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o")));
}
- getToolChain().addProfileRTLibs(EffectiveTriple, Args, CmdArgs);
+ getToolChain().addProfileRTLibs(Args, CmdArgs);
const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath());
C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
@@ -10074,7 +10035,6 @@ static std::string FindVisualStudioExecutable(const ToolChain &TC,
void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
@@ -10154,18 +10114,15 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(Args.MakeArgString("-incremental:no"));
if (Args.hasArg(options::OPT__SLASH_MD, options::OPT__SLASH_MDd)) {
for (const auto &Lib : {"asan_dynamic", "asan_dynamic_runtime_thunk"})
- CmdArgs.push_back(
- TC.getCompilerRTArgString(EffectiveTriple, Args, Lib));
+ CmdArgs.push_back(TC.getCompilerRTArgString(Args, Lib));
// Make sure the dynamic runtime thunk is not optimized out at link time
// to ensure proper SEH handling.
CmdArgs.push_back(Args.MakeArgString("-include:___asan_seh_interceptor"));
} else if (DLL) {
- CmdArgs.push_back(
- TC.getCompilerRTArgString(EffectiveTriple, Args, "asan_dll_thunk"));
+ CmdArgs.push_back(TC.getCompilerRTArgString(Args, "asan_dll_thunk"));
} else {
for (const auto &Lib : {"asan", "asan_cxx"})
- CmdArgs.push_back(
- TC.getCompilerRTArgString(EffectiveTriple, Args, Lib));
+ CmdArgs.push_back(TC.getCompilerRTArgString(Args, Lib));
}
}
@@ -10195,7 +10152,7 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
// Add compiler-rt lib in case if it was explicitly
// specified as an argument for --rtlib option.
if (!Args.hasArg(options::OPT_nostdlib)) {
- AddRunTimeLibs(TC, TC.getDriver(), EffectiveTriple, CmdArgs, Args);
+ AddRunTimeLibs(TC, TC.getDriver(), CmdArgs, Args);
}
// Add filenames, libraries, and other linker inputs.
@@ -10224,7 +10181,7 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
A.renderAsInput(Args, CmdArgs);
}
- TC.addProfileRTLibs(EffectiveTriple, Args, CmdArgs);
+ TC.addProfileRTLibs(Args, CmdArgs);
// We need to special case some linker paths. In the case of lld, we need to
// translate 'lld' into 'lld-link', and in the case of the regular msvc
@@ -10253,7 +10210,6 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void visualstudio::Compiler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
C.addCommand(GetCommand(C, JA, Output, Inputs, Args, LinkingOutput));
@@ -10376,7 +10332,6 @@ std::unique_ptr<Command> visualstudio::Compiler::GetCommand(
void MinGW::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -10404,8 +10359,7 @@ void MinGW::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
SplitDebugName(Args, Inputs[0]));
}
-void MinGW::Linker::AddLibGCC(const llvm::Triple &EffectiveTriple,
- const ArgList &Args,
+void MinGW::Linker::AddLibGCC(const ArgList &Args,
ArgStringList &CmdArgs) const {
if (Args.hasArg(options::OPT_mthreads))
CmdArgs.push_back("-lmingwthrd");
@@ -10427,8 +10381,7 @@ void MinGW::Linker::AddLibGCC(const llvm::Triple &EffectiveTriple,
CmdArgs.push_back("-lgcc");
}
} else {
- AddRunTimeLibs(getToolChain(), getToolChain().getDriver(), EffectiveTriple,
- CmdArgs, Args);
+ AddRunTimeLibs(getToolChain(), getToolChain().getDriver(), CmdArgs, Args);
}
CmdArgs.push_back("-lmoldname");
@@ -10439,7 +10392,6 @@ void MinGW::Linker::AddLibGCC(const llvm::Triple &EffectiveTriple,
void MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const ToolChain &TC = getToolChain();
@@ -10562,7 +10514,7 @@ void MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA,
if (Args.hasArg(options::OPT_fopenmp))
CmdArgs.push_back("-lgomp");
- AddLibGCC(EffectiveTriple, Args, CmdArgs);
+ AddLibGCC(Args, CmdArgs);
if (Args.hasArg(options::OPT_pg))
CmdArgs.push_back("-lgmon");
@@ -10583,7 +10535,7 @@ void MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA,
if (Args.hasArg(options::OPT_static))
CmdArgs.push_back("--end-group");
else if (!LinkerName.equals_lower("lld"))
- AddLibGCC(EffectiveTriple, Args, CmdArgs);
+ AddLibGCC(Args, CmdArgs);
}
if (!Args.hasArg(options::OPT_nostartfiles)) {
@@ -10603,7 +10555,6 @@ void MinGW::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void XCore::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -10637,7 +10588,6 @@ void XCore::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void XCore::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
@@ -10666,7 +10616,6 @@ void XCore::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void CrossWindows::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -10706,7 +10655,6 @@ void CrossWindows::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void CrossWindows::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const auto &TC =
@@ -10830,19 +10778,17 @@ void CrossWindows::Linker::ConstructJob(Compilation &C, const JobAction &JA,
if (!Args.hasArg(options::OPT_nodefaultlibs)) {
// TODO handle /MT[d] /MD[d]
CmdArgs.push_back("-lmsvcrt");
- AddRunTimeLibs(TC, D, EffectiveTriple, CmdArgs, Args);
+ AddRunTimeLibs(TC, D, CmdArgs, Args);
}
}
if (TC.getSanitizerArgs().needsAsanRt()) {
// TODO handle /MT[d] /MD[d]
if (Args.hasArg(options::OPT_shared)) {
- CmdArgs.push_back(
- TC.getCompilerRTArgString(EffectiveTriple, Args, "asan_dll_thunk"));
+ CmdArgs.push_back(TC.getCompilerRTArgString(Args, "asan_dll_thunk"));
} else {
for (const auto &Lib : {"asan_dynamic", "asan_dynamic_runtime_thunk"})
- CmdArgs.push_back(
- TC.getCompilerRTArgString(EffectiveTriple, Args, Lib));
+ CmdArgs.push_back(TC.getCompilerRTArgString(Args, Lib));
// Make sure the dynamic runtime thunk is not optimized out at link time
// to ensure proper SEH handling.
CmdArgs.push_back(Args.MakeArgString("--undefined"));
@@ -10860,7 +10806,6 @@ void CrossWindows::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void tools::SHAVE::Compiler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
@@ -10917,7 +10862,6 @@ void tools::SHAVE::Compiler::ConstructJob(Compilation &C, const JobAction &JA,
void tools::SHAVE::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
ArgStringList CmdArgs;
@@ -10954,7 +10898,6 @@ void tools::SHAVE::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void tools::Myriad::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const auto &TC =
@@ -11030,7 +10973,6 @@ void tools::Myriad::Linker::ConstructJob(Compilation &C, const JobAction &JA,
void PS4cpu::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
claimNoWarnArgs(Args);
@@ -11299,7 +11241,6 @@ static void ConstructGoldLinkJob(const Tool &T, Compilation &C,
void PS4cpu::Link::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const toolchains::FreeBSD &ToolChain =
@@ -11329,7 +11270,6 @@ void PS4cpu::Link::ConstructJob(Compilation &C, const JobAction &JA,
void NVPTX::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const auto &TC =
@@ -11406,7 +11346,6 @@ void NVPTX::Assembler::ConstructJob(Compilation &C, const JobAction &JA,
void NVPTX::Linker::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
- const llvm::Triple &EffectiveTriple,
const ArgList &Args,
const char *LinkingOutput) const {
const auto &TC =