diff options
author | Vedant Kumar <vsk@apple.com> | 2016-07-27 23:01:55 +0000 |
---|---|---|
committer | Vedant Kumar <vsk@apple.com> | 2016-07-27 23:01:55 +0000 |
commit | 5fb00e4bd7c8f767a18377c91c99dacc2f74089f (patch) | |
tree | 9d7d30229e515a2f695d0b0505eca88e0f541abd /clang/lib/Driver/Tools.cpp | |
parent | 436f7d660625d45a306977c31577ac62820df3e3 (diff) | |
download | llvm-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.cpp | 313 |
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 = |