Lines Matching defs:Args

1 //===--- CommonArgs.cpp - Args handling for multiple toolchains -*- C++ -*-===//
75 static bool useFramePointerForTargetByDefault(const llvm::opt::ArgList &Args,
77 if (Args.hasArg(clang::driver::options::OPT_pg) &&
78 !Args.hasArg(clang::driver::options::OPT_mfentry))
107 return !clang::driver::tools::areOptimizationsEnabled(Args);
113 return !clang::driver::tools::areOptimizationsEnabled(Args);
130 return !clang::driver::tools::areOptimizationsEnabled(Args);
139 return !clang::driver::tools::areOptimizationsEnabled(Args);
178 static bool mustMaintainValidFrameChain(const llvm::opt::ArgList &Args,
184 if (Arg *A = Args.getLastArg(options::OPT_mframe_chain)) {
195 static bool framePointerImpliesLeafFramePointer(const llvm::opt::ArgList &Args,
201 if (Arg *A = Args.getLastArg(options::OPT_mframe_chain)) {
211 getFramePointerKind(const llvm::opt::ArgList &Args,
239 bool DefaultFP = useFramePointerForTargetByDefault(Args, Triple);
242 Args.hasFlag(clang::driver::options::OPT_fno_omit_frame_pointer,
247 (EnableFP && framePointerImpliesLeafFramePointer(Args, Triple));
248 bool EnableLeafFP = Args.hasFlag(
252 bool FPRegReserved = EnableFP || mustMaintainValidFrameChain(Args, Triple);
264 static void renderRpassOptions(const ArgList &Args, ArgStringList &CmdArgs,
266 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_EQ))
267 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
270 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_missed_EQ))
271 CmdArgs.push_back(Args.MakeArgString(
274 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_analysis_EQ))
275 CmdArgs.push_back(Args.MakeArgString(
279 static void renderRemarksOptions(const ArgList &Args, ArgStringList &CmdArgs,
285 if (const Arg *A = Args.getLastArg(options::OPT_fsave_optimization_record_EQ))
289 const Arg *A = Args.getLastArg(options::OPT_foptimization_record_file_EQ);
297 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
302 Args.getLastArg(options::OPT_foptimization_record_passes_EQ))
303 CmdArgs.push_back(Args.MakeArgString(
306 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
310 static void renderRemarksHotnessOptions(const ArgList &Args,
313 if (Args.hasFlag(options::OPT_fdiagnostics_show_hotness,
315 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
319 Args.getLastArg(options::OPT_fdiagnostics_hotness_threshold_EQ))
321 Args.MakeArgString(Twine(PluginOptPrefix) +
348 const ArgList &Args,
352 for (const Arg *A : Args.filtered(Group)) {
360 auto Proc = getCPUName(D, Args, Triple);
365 << A->getAsString(Args) << Proc;
373 Features.push_back(Args.MakeArgString((IsNegative ? "-" : "+") + Name));
390 void tools::addDirectoryList(const ArgList &Args, ArgStringList &CmdArgs,
410 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + "."));
418 Args.MakeArgString(std::string(ArgName) + Dirs.substr(0, Delim)));
421 CmdArgs.push_back(Args.MakeArgString(Dirs.substr(0, Delim)));
429 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + "."));
436 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + Dirs));
439 CmdArgs.push_back(Args.MakeArgString(Dirs));
445 const ArgList &Args, ArgStringList &CmdArgs,
451 Args.AddAllArgValues(CmdArgs, options::OPT_Zlinker_input);
456 addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH");
486 TC.AddCXXStdlibLibArgs(Args, CmdArgs);
488 TC.AddCCKextLibArgs(Args, CmdArgs);
490 A.renderAsInput(Args, CmdArgs);
495 const ToolChain &TC, const llvm::opt::ArgList &Args,
502 if (const Arg *A = Args.getLastArg(options::OPT_gz_EQ)) {
505 CmdArgs.push_back(Args.MakeArgString("--compress-debug-sections=" + V));
512 void tools::AddTargetFeature(const ArgList &Args,
516 if (Arg *A = Args.getLastArg(OnOpt, OffOpt)) {
518 Features.push_back(Args.MakeArgString("+" + FeatureName));
520 Features.push_back(Args.MakeArgString("-" + FeatureName));
526 const ArgList &Args) {
527 Arg *MArch = Args.getLastArg(options::OPT_march_EQ);
528 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
545 static std::string getLanaiTargetCPU(const ArgList &Args) {
546 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
553 static StringRef getWebAssemblyTargetCPU(const ArgList &Args) {
555 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
571 std::string tools::getCPUName(const Driver &D, const ArgList &Args,
582 return aarch64::getAArch64TargetCPU(Args, T, A);
589 arm::getARMArchCPUFromArgs(Args, MArch, MCPU, FromAs);
594 if (const Arg *A = Args.getLastArg(options::OPT_mmcu_EQ))
599 return m68k::getM68kTargetCPU(Args);
607 mips::getMipsCPUAndABI(Args, T, CPUName, ABIName);
613 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ))
621 return ppc::getPPCTargetCPU(D, Args, T);
624 if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
626 else if (const Arg *A = Args.getLastArg(options::OPT_march_EQ))
632 return riscv::getRISCVTargetCPU(Args, T);
636 if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
643 return sparc::getSparcTargetCPU(D, Args, T);
647 return x86::getX86TargetCPU(D, Args, T);
651 toolchains::HexagonToolChain::GetTargetCPUVersion(Args).str();
654 return getLanaiTargetCPU(Args);
657 return systemz::getSystemZTargetCPU(Args);
661 return getAMDGPUTargetGPU(T, Args);
665 return std::string(getWebAssemblyTargetCPU(Args));
669 return loongarch::getLoongArchTargetCPU(Args, T);
675 const ArgList &Args,
677 handleTargetFeaturesGroup(D, Triple, Args, Features,
682 const ArgList &Args, ArgStringList &CmdArgs,
692 mips::getMIPSTargetFeatures(D, Triple, Args, Features);
698 arm::getARMTargetFeatures(D, Triple, Args, Features, ForAS);
704 ppc::getPPCTargetFeatures(D, Triple, Args, Features);
708 riscv::getRISCVTargetFeatures(D, Triple, Args, Features);
711 systemz::getSystemZTargetFeatures(D, Args, Features);
716 aarch64::getAArch64TargetFeatures(D, Triple, Args, Features, ForAS);
720 x86::getX86TargetFeatures(D, Triple, Args, Features);
723 hexagon::getHexagonTargetFeatures(D, Triple, Args, Features);
727 getWebAssemblyTargetFeatures(D, Triple, Args, Features);
732 sparc::getSparcTargetFeatures(D, Args, Features);
736 amdgpu::getAMDGPUTargetFeatures(D, Triple, Args, Features);
740 NVPTX::getNVPTXTargetFeatures(D, Triple, Args, Features);
743 m68k::getM68kTargetFeatures(D, Triple, Args, Features);
746 msp430::getMSP430TargetFeatures(D, Args, Features);
749 ve::getVETargetFeatures(D, Args, Features);
752 csky::getCSKYTargetFeatures(D, Triple, Args, CmdArgs, Features);
756 loongarch::getLoongArchTargetFeatures(D, Triple, Args, Features);
766 llvm::StringRef tools::getLTOParallelism(const ArgList &Args, const Driver &D) {
767 Arg *LtoJobsArg = Args.getLastArg(options::OPT_flto_jobs_EQ);
772 << LtoJobsArg->getAsString(Args) << LtoJobsArg->getValue();
782 const llvm::opt::ArgList &Args) {
784 Arg *A = Args.getLastArg(options::OPT_mtls_dialect_EQ);
809 void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args,
815 const char *Linker = Args.MakeArgString(ToolChain.GetLinkerPath());
817 const bool IsFatLTO = Args.hasArg(options::OPT_ffat_lto_objects);
818 const bool IsUnifiedLTO = Args.hasArg(options::OPT_funified_lto);
843 CmdArgs.push_back(Args.MakeArgString(Twine(PluginPrefix) + Plugin));
858 if (Args.hasArg(options::OPT_gdwarf_aranges)) {
859 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
864 Arg *ArgVecLib = Args.getLastArg(options::OPT_fveclib);
881 CmdArgs.push_back(Args.MakeArgString(
889 std::string CPU = getCPUName(D, Args, Triple);
892 Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash + "mcpu=" + CPU));
894 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
911 Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash + "O" + OOpt));
913 CmdArgs.push_back(Args.MakeArgString(Twine("--lto-CGO") + OOpt));
917 if (Args.hasArg(options::OPT_gsplit_dwarf))
918 CmdArgs.push_back(Args.MakeArgString(
922 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + "thinlto"));
924 CmdArgs.push_back(Args.MakeArgString(Twine("-bdbg:thinlto")));
930 Args.hasArg(options::OPT_fenable_matrix))
932 Args.MakeArgString(Twine(PluginOptPrefix) + "-enable-matrix"));
934 StringRef Parallelism = getLTOParallelism(Args, D);
936 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
940 if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel,
944 CmdArgs.push_back(Args.MakeArgString(
951 Args.getLastArg(options::OPT_gTune_Group, options::OPT_ggdbN_Group)) {
954 Args.MakeArgString(Twine(PluginOptPrefix) + "-debugger-tune=lldb"));
957 Args.MakeArgString(Twine(PluginOptPrefix) + "-debugger-tune=sce"));
960 Args.MakeArgString(Twine(PluginOptPrefix) + "-debugger-tune=dbx"));
963 Args.MakeArgString(Twine(PluginOptPrefix) + "-debugger-tune=gdb"));
969 Args.MakeArgString(Twine(PluginOptPrefix) + "-no-integrated-as=1"));
973 Arg *A = Args.getLastArg(options::OPT_g_Group);
976 if (EnableDebugInfo && Args.hasFlag(options::OPT_gstrict_dwarf,
979 Args.MakeArgString(Twine(PluginOptPrefix) + "-strict-dwarf=true"));
981 for (const Arg *A : Args.filtered_reverse(options::OPT_mabi_EQ)) {
987 Args.MakeArgString(Twine(PluginOptPrefix) + "-vec-extabi"));
996 if (Args.hasFlag(options::OPT_ffunction_sections,
999 Args.MakeArgString(Twine(PluginOptPrefix) + "-function-sections=1"));
1000 else if (Args.hasArg(options::OPT_fno_function_sections))
1002 Args.MakeArgString(Twine(PluginOptPrefix) + "-function-sections=0"));
1005 if (Args.hasFlag(options::OPT_fdata_sections, options::OPT_fno_data_sections,
1008 Args.MakeArgString(Twine(PluginOptPrefix) + "-data-sections=1"));
1009 } else if (Args.hasArg(options::OPT_fno_data_sections)) {
1012 Args.MakeArgString(Twine(PluginOptPrefix) + "-data-sections=0"));
1015 if (Args.hasArg(options::OPT_mxcoff_roptr) ||
1016 Args.hasArg(options::OPT_mno_xcoff_roptr)) {
1017 bool HasRoptr = Args.hasFlag(options::OPT_mxcoff_roptr,
1032 Args.MakeArgString(Twine(PluginOptPrefix) + "-mxcoff-roptr"));
1037 if (auto *A = Args.getLastArg(options::OPT_fsplit_machine_functions,
1040 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
1044 if (Arg *A = getLastProfileSampleUseArg(Args)) {
1049 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
1053 if (auto *CSPGOGenerateArg = getLastCSProfileGenerateArg(Args)) {
1054 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash +
1060 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash +
1064 Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash +
1066 } else if (auto *ProfileUseArg = getLastProfileUseArg(Args)) {
1071 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash +
1076 if (Args.hasFlag(options::OPT_fjmc, options::OPT_fno_jmc, false)) {
1078 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
1084 if (Args.hasFlag(options::OPT_femulated_tls, options::OPT_fno_emulated_tls,
1087 Args.MakeArgString(Twine(PluginOptPrefix) + "-emulated-tls"));
1089 if (isTLSDESCEnabled(ToolChain, Args))
1091 Args.MakeArgString(Twine(PluginOptPrefix) + "-enable-tlsdesc"));
1093 if (Args.hasFlag(options::OPT_fstack_size_section,
1096 Args.MakeArgString(Twine(PluginOptPrefix) + "-stack-size-section"));
1099 SmallString<128> StatsFile = getStatsFileName(Args, Output, Input, D);
1102 Args.MakeArgString(Twine(PluginOptPrefix) + "stats-file=" + StatsFile));
1105 if (Arg *A = Args.getLastArg(options::OPT_fcrash_diagnostics_dir))
1106 CmdArgs.push_back(Args.MakeArgString(
1109 addX86AlignBranchArgs(D, Args, CmdArgs, /*IsLTO=*/true, PluginOptPrefix);
1112 renderRpassOptions(Args, CmdArgs, PluginOptPrefix);
1116 if (willEmitRemarks(Args))
1117 renderRemarksOptions(Args, CmdArgs, ToolChain.getEffectiveTriple(), Input,
1121 renderRemarksHotnessOptions(Args, CmdArgs, PluginOptPrefix);
1123 addMachineOutlinerArgs(D, Args, CmdArgs, ToolChain.getEffectiveTriple(),
1126 for (const Arg *A : Args.filtered(options::OPT_Wa_COMMA)) {
1139 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + "-crel"));
1150 static void addOpenMPDeviceLibC(const Compilation &C, const ArgList &Args,
1152 if (Args.hasArg(options::OPT_nogpulib) || Args.hasArg(options::OPT_nolibc))
1162 if (!Args.hasFlag(options::OPT_gpulibc, options::OPT_nogpulibc, HasLibC))
1185 const ArgList &Args,
1192 CmdArgs.push_back(Args.MakeArgString("-L" + DefaultLibPath));
1195 void tools::addArchSpecificRPath(const ToolChain &TC, const ArgList &Args,
1197 if (!Args.hasFlag(options::OPT_frtlib_add_rpath,
1208 CmdArgs.push_back(Args.MakeArgString(CandidateRPath));
1214 const ToolChain &TC, const ArgList &Args,
1217 if (!Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
1221 Driver::OpenMPRuntimeKind RTKind = TC.getDriver().getOpenMPRuntime(Args);
1253 if (IsOffloadingHost && !Args.hasArg(options::OPT_nogpulib))
1257 addOpenMPDeviceLibC(C, Args, CmdArgs);
1259 addArchSpecificRPath(TC, Args, CmdArgs);
1260 addOpenMPRuntimeLibraryPath(TC, Args, CmdArgs);
1266 void tools::addFortranRuntimeLibs(const ToolChain &TC, const ArgList &Args,
1279 addAsNeededOption(TC, Args, CmdArgs, /*as_needed=*/true);
1280 CmdArgs.push_back(Args.MakeArgString("-l" + F128LibName));
1282 addAsNeededOption(TC, Args, CmdArgs, /*as_needed=*/false);
1290 const llvm::opt::ArgList &Args,
1300 CmdArgs.push_back(Args.MakeArgString("-libpath:" + DefaultLibPath));
1302 CmdArgs.push_back(Args.MakeArgString("-L" + DefaultLibPath));
1305 static void addSanitizerRuntime(const ToolChain &TC, const ArgList &Args,
1312 Args, Sanitizer, IsShared ? ToolChain::FT_Shared : ToolChain::FT_Static));
1316 addArchSpecificRPath(TC, Args, CmdArgs);
1322 static bool addSanitizerDynamicList(const ToolChain &TC, const ArgList &Args,
1325 bool LinkerIsGnuLd = solaris::isLinkerGnuLd(TC, Args);
1331 SmallString<128> SanRT(TC.getCompilerRT(Args, Sanitizer));
1333 CmdArgs.push_back(Args.MakeArgString("--dynamic-list=" + SanRT + ".syms"));
1340 const llvm::opt::ArgList &Args,
1345 bool LinkerIsGnuLd = solaris::isLinkerGnuLd(TC, Args);
1361 const llvm::opt::ArgList &Args,
1365 addAsNeededOption(TC, Args, CmdArgs, false);
1393 collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
1399 const SanitizerArgs &SanArgs = TC.getSanitizerArgs(Args);
1404 if (!Args.hasArg(options::OPT_shared) && !TC.getTriple().isAndroid())
1409 if (!Args.hasArg(options::OPT_shared) && !TC.getTriple().isAndroid())
1430 if (!Args.hasArg(options::OPT_shared))
1444 if (Args.hasArg(options::OPT_shared)) {
1526 bool tools::addSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
1528 const SanitizerArgs &SanArgs = TC.getSanitizerArgs(Args);
1532 collectSanitizerRuntimes(TC, Args, SharedRuntimes, StaticRuntimes,
1540 CmdArgs.push_back(Args.MakeArgString(S));
1545 !Args.hasArg(options::OPT_shared)) {
1547 addSanitizerRuntime(TC, Args, CmdArgs, "fuzzer", false, true);
1549 addSanitizerRuntime(TC, Args, CmdArgs, "fuzzer_interceptors", false,
1551 if (!Args.hasArg(clang::driver::options::OPT_nostdlibxx)) {
1552 bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
1553 !Args.hasArg(options::OPT_static);
1556 TC.AddCXXStdlibLibArgs(Args, CmdArgs);
1563 addSanitizerRuntime(TC, Args, CmdArgs, RT, true, false);
1565 addSanitizerRuntime(TC, Args, CmdArgs, RT, false, true);
1568 addSanitizerRuntime(TC, Args, CmdArgs, RT, false, true);
1569 AddExportDynamic |= !addSanitizerDynamicList(TC, Args, CmdArgs, RT);
1572 addSanitizerRuntime(TC, Args, CmdArgs, RT, false, false);
1573 AddExportDynamic |= !addSanitizerDynamicList(TC, Args, CmdArgs, RT);
1589 Args.MakeArgString("--android-memtag-mode=" + SanArgs.getMemtagMode()));
1599 bool tools::addXRayRuntime(const ToolChain&TC, const ArgList &Args, ArgStringList &CmdArgs) {
1600 if (Args.hasArg(options::OPT_shared))
1605 CmdArgs.push_back(TC.getCompilerRTArgString(Args, "xray"));
1607 CmdArgs.push_back(TC.getCompilerRTArgString(Args, Mode));
1616 const llvm::opt::ArgList &Args,
1618 addAsNeededOption(TC, Args, CmdArgs, false);
1630 bool tools::areOptimizationsEnabled(const ArgList &Args) {
1632 if (Arg *A = Args.getLastArg(options::OPT_O_Group))
1638 const char *tools::SplitDebugName(const JobAction &JA, const ArgList &Args,
1646 if (Arg *A = Args.getLastArg(options::OPT_gsplit_dwarf_EQ))
1648 return Args.MakeArgString(Output.getFilename());
1651 if (const Arg *A = Args.getLastArg(options::OPT_dumpdir)) {
1654 Arg *FinalOutput = Args.getLastArg(options::OPT_o, options::OPT__SLASH_o);
1655 if (FinalOutput && Args.hasArg(options::OPT_c)) {
1661 return Args.MakeArgString(T);
1667 return Args.MakeArgString(T);
1671 const JobAction &JA, const ArgList &Args,
1685 Args.MakeArgString(TC.GetProgramPath(CLANG_DEFAULT_OBJCOPY));
1701 void tools::claimNoWarnArgs(const ArgList &Args) {
1704 Args.ClaimAllArgs(options::OPT_flto_EQ);
1705 Args.ClaimAllArgs(options::OPT_flto);
1706 Args.ClaimAllArgs(options::OPT_fno_lto);
1709 Arg *tools::getLastCSProfileGenerateArg(const ArgList &Args) {
1710 auto *CSPGOGenerateArg = Args.getLastArg(options::OPT_fcs_profile_generate,
1720 Arg *tools::getLastProfileUseArg(const ArgList &Args) {
1721 auto *ProfileUseArg = Args.getLastArg(
1733 Arg *tools::getLastProfileSampleUseArg(const ArgList &Args) {
1734 auto *ProfileSampleUseArg = Args.getLastArg(
1745 return Args.getLastArg(options::OPT_fprofile_sample_use_EQ,
1772 tools::ParsePICArgs(const ToolChain &ToolChain, const ArgList &Args) {
1776 bool PIE = ToolChain.isPIEDefault(Args);
1779 if (Triple.isOSBinFormatMachO() && Args.hasArg(options::OPT_static))
1784 Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext);
1842 Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
1847 LastPICArg == Args.getLastArg(options::OPT_fPIC, options::OPT_fpic,
1871 Arg *ModelArg = Args.getLastArg(options::OPT_mcmodel_EQ);
1897 if (Arg *A = Args.getLastArg(options::OPT_mdynamic_no_pic)) {
1928 Arg* LastROPIArg = Args.getLastArg(options::OPT_fropi, options::OPT_fno_ropi);
1935 Arg *LastRWPIArg = Args.getLastArg(options::OPT_frwpi, options::OPT_fno_rwpi);
1950 mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName);
1957 if(Args.hasArg(options::OPT_mno_abicalls))
1995 const ArgList &Args) {
1996 const Arg *A = Args.getLastArg(options::OPT_falign_functions,
2008 << A->getAsString(Args) << A->getValue();
2055 const ArgList &Args) {
2056 const Arg *A = Args.getLastArg(options::OPT_fdebug_default_version);
2065 << A->getAsString(Args) << A->getValue();
2078 const Arg *tools::getDwarfNArg(const ArgList &Args) {
2079 return Args.getLastArg(options::OPT_gdwarf_2, options::OPT_gdwarf_3,
2085 const llvm::opt::ArgList &Args) {
2086 unsigned DwarfVersion = ParseDebugDefaultVersion(TC, Args);
2087 if (const Arg *GDwarfN = getDwarfNArg(Args))
2101 void tools::AddAssemblerKPIC(const ToolChain &ToolChain, const ArgList &Args,
2106 std::tie(RelocationModel, PICLevel, IsPIE) = ParsePICArgs(ToolChain, Args);
2114 bool tools::isObjCAutoRefCount(const ArgList &Args) {
2115 return Args.hasFlag(options::OPT_fobjc_arc, options::OPT_fno_objc_arc, false);
2121 const ArgList &Args) {
2122 if (Args.hasArg(options::OPT_static_libgcc) ||
2123 Args.hasArg(options::OPT_static) || Args.hasArg(options::OPT_static_pie) ||
2127 if (Args.hasArg(options::OPT_shared_libgcc))
2146 ArgStringList &CmdArgs, const ArgList &Args) {
2147 ToolChain::UnwindLibType UNW = TC.GetUnwindLibType(Args);
2160 LibGccType LGT = getLibGccType(TC, D, Args);
2166 addAsNeededOption(TC, Args, CmdArgs, true);
2200 addAsNeededOption(TC, Args, CmdArgs, false);
2204 ArgStringList &CmdArgs, const ArgList &Args) {
2205 LibGccType LGT = getLibGccType(TC, D, Args);
2209 AddUnwindLibrary(TC, D, CmdArgs, Args);
2216 ArgStringList &CmdArgs, const ArgList &Args) {
2218 ToolChain::RuntimeLibType RLT = TC.GetRuntimeLibType(Args);
2222 CmdArgs.push_back(TC.getCompilerRTArgString(Args, "builtins"));
2223 AddUnwindLibrary(TC, D, CmdArgs, Args);
2230 Arg *A = Args.getLastArg(options::OPT_rtlib_EQ);
2236 AddLibgcc(TC, D, CmdArgs, Args);
2243 if (TC.getTriple().isAndroid() && !Args.hasArg(options::OPT_static) &&
2244 !Args.hasArg(options::OPT_static_pie))
2248 SmallString<128> tools::getStatsFileName(const llvm::opt::ArgList &Args,
2252 const Arg *A = Args.getLastArg(options::OPT_save_stats_EQ);
2263 D.Diag(diag::err_drv_invalid_value) << A->getAsString(Args) << SaveStats;
2289 void tools::addX86AlignBranchArgs(const Driver &D, const ArgList &Args,
2295 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + Arg));
2298 CmdArgs.push_back(Args.MakeArgString(Arg));
2302 if (Args.hasArg(options::OPT_mbranches_within_32B_boundaries)) {
2305 if (const Arg *A = Args.getLastArg(options::OPT_malign_branch_boundary_EQ)) {
2316 if (const Arg *A = Args.getLastArg(options::OPT_malign_branch_EQ)) {
2329 if (const Arg *A = Args.getLastArg(options::OPT_mpad_max_prefix_size_EQ)) {
2652 getAMDGPUCodeObjectArgument(const Driver &D, const llvm::opt::ArgList &Args) {
2653 return Args.getLastArg(options::OPT_mcode_object_version_EQ);
2657 const llvm::opt::ArgList &Args) {
2661 if (auto *CodeObjArg = getAMDGPUCodeObjectArgument(D, Args)) {
2669 << CodeObjArg->getAsString(Args) << CodeObjArg->getValue();
2681 const llvm::opt::ArgList &Args) {
2683 if (auto *CodeObjArg = getAMDGPUCodeObjectArgument(D, Args))
2689 const Driver &D, const llvm::opt::ArgList &Args) {
2690 return getAMDGPUCodeObjectArgument(D, Args) != nullptr;
2694 const llvm::opt::ArgList &Args,
2701 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + Arg));
2704 CmdArgs.push_back(Args.MakeArgString(Arg));
2708 if (Arg *A = Args.getLastArg(options::OPT_moutline,
2792 const llvm::opt::ArgList &Args,
2795 !Args.hasArg(options::OPT_nostdlib) &&
2796 !Args.hasArg(options::OPT_no_hip_rt) && !Args.hasArg(options::OPT_r)) {
2797 TC.AddHIPRuntimeLibArgs(Args, CmdArgs);
2800 for (auto *Arg : Args.filtered(options::OPT_no_hip_rt)) {
2807 const llvm::opt::ArgList &Args,
2810 if (Arg *A = Args.getLastArg(options::OPT_moutline_atomics,
2825 } else if (Triple.isAArch64() && TC.IsAArch64OutlineAtomicsDefault(Args)) {
2843 void tools::addMCModel(const Driver &D, const llvm::opt::ArgList &Args,
2847 if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) {
2857 << A->getAsString(Args) << "-fno-pic";
2860 Args.hasFlagNoClaim(options::OPT_fplt, options::OPT_fno_plt, false))
2862 << A->getAsString(Args) << "-fplt";
2895 CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM));
2905 if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) {
2909 if (Arg *A = Args.getLastArg(options::OPT_mlarge_data_threshold_EQ)) {
2914 A->render(Args, CmdArgs);