Lines Matching defs:Args

1 //===--- CommonArgs.cpp - Args handling for multiple toolchains -*- C++ -*-===//
77 static bool useFramePointerForTargetByDefault(const llvm::opt::ArgList &Args,
79 if (Args.hasArg(clang::driver::options::OPT_pg) &&
80 !Args.hasArg(clang::driver::options::OPT_mfentry))
109 return !clang::driver::tools::areOptimizationsEnabled(Args);
115 return !clang::driver::tools::areOptimizationsEnabled(Args);
132 return !clang::driver::tools::areOptimizationsEnabled(Args);
141 return !clang::driver::tools::areOptimizationsEnabled(Args);
183 static bool mustMaintainValidFrameChain(const llvm::opt::ArgList &Args,
189 if (Arg *A = Args.getLastArg(options::OPT_mframe_chain)) {
200 static bool framePointerImpliesLeafFramePointer(const llvm::opt::ArgList &Args,
206 if (Arg *A = Args.getLastArg(options::OPT_mframe_chain)) {
216 getFramePointerKind(const llvm::opt::ArgList &Args,
244 bool DefaultFP = useFramePointerForTargetByDefault(Args, Triple);
247 Args.hasFlag(clang::driver::options::OPT_fno_omit_frame_pointer,
252 (EnableFP && framePointerImpliesLeafFramePointer(Args, Triple));
253 bool EnableLeafFP = Args.hasFlag(
257 bool FPRegReserved = EnableFP || mustMaintainValidFrameChain(Args, Triple);
269 static void renderRpassOptions(const ArgList &Args, ArgStringList &CmdArgs,
271 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_EQ))
272 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
275 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_missed_EQ))
276 CmdArgs.push_back(Args.MakeArgString(
279 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_analysis_EQ))
280 CmdArgs.push_back(Args.MakeArgString(
284 static void renderRemarksOptions(const ArgList &Args, ArgStringList &CmdArgs,
290 if (const Arg *A = Args.getLastArg(options::OPT_fsave_optimization_record_EQ))
294 const Arg *A = Args.getLastArg(options::OPT_foptimization_record_file_EQ);
302 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
307 Args.getLastArg(options::OPT_foptimization_record_passes_EQ))
308 CmdArgs.push_back(Args.MakeArgString(
311 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
315 static void renderRemarksHotnessOptions(const ArgList &Args,
318 if (Args.hasFlag(options::OPT_fdiagnostics_show_hotness,
320 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
324 Args.getLastArg(options::OPT_fdiagnostics_hotness_threshold_EQ))
326 Args.MakeArgString(Twine(PluginOptPrefix) +
353 const ArgList &Args,
357 for (const Arg *A : Args.filtered(Group)) {
365 auto Proc = getCPUName(D, Args, Triple);
370 << A->getAsString(Args) << Proc;
378 Features.push_back(Args.MakeArgString((IsNegative ? "-" : "+") + Name));
395 void tools::addDirectoryList(const ArgList &Args, ArgStringList &CmdArgs,
415 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + "."));
423 Args.MakeArgString(std::string(ArgName) + Dirs.substr(0, Delim)));
426 CmdArgs.push_back(Args.MakeArgString(Dirs.substr(0, Delim)));
434 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + "."));
441 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + Dirs));
444 CmdArgs.push_back(Args.MakeArgString(Dirs));
450 const ArgList &Args, ArgStringList &CmdArgs,
456 Args.AddAllArgValues(CmdArgs, options::OPT_Zlinker_input);
461 addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH");
491 TC.AddCXXStdlibLibArgs(Args, CmdArgs);
493 TC.AddCCKextLibArgs(Args, CmdArgs);
495 A.renderAsInput(Args, CmdArgs);
497 if (const Arg *A = Args.getLastArg(options::OPT_fveclib)) {
519 CmdArgs.push_back(Args.MakeArgString("--push-state"));
520 CmdArgs.push_back(Args.MakeArgString("--as-needed"));
522 CmdArgs.push_back(Args.MakeArgString("-lm"));
523 CmdArgs.push_back(Args.MakeArgString("-lamath"));
524 CmdArgs.push_back(Args.MakeArgString("-lm"));
526 CmdArgs.push_back(Args.MakeArgString("--pop-state"));
527 addArchSpecificRPath(TC, Args, CmdArgs);
533 const ToolChain &TC, const llvm::opt::ArgList &Args,
540 if (const Arg *A = Args.getLastArg(options::OPT_gz_EQ)) {
543 CmdArgs.push_back(Args.MakeArgString("--compress-debug-sections=" + V));
550 void tools::AddTargetFeature(const ArgList &Args,
554 if (Arg *A = Args.getLastArg(OnOpt, OffOpt)) {
556 Features.push_back(Args.MakeArgString("+" + FeatureName));
558 Features.push_back(Args.MakeArgString("-" + FeatureName));
564 const ArgList &Args) {
565 Arg *MArch = Args.getLastArg(options::OPT_march_EQ);
566 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
583 static std::string getLanaiTargetCPU(const ArgList &Args) {
584 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
591 static StringRef getWebAssemblyTargetCPU(const ArgList &Args) {
593 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
609 std::string tools::getCPUName(const Driver &D, const ArgList &Args,
620 return aarch64::getAArch64TargetCPU(Args, T, A);
627 arm::getARMArchCPUFromArgs(Args, MArch, MCPU, FromAs);
632 if (const Arg *A = Args.getLastArg(options::OPT_mmcu_EQ))
637 return m68k::getM68kTargetCPU(Args);
645 mips::getMipsCPUAndABI(Args, T, CPUName, ABIName);
651 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ))
659 if (Arg *A = Args.getLastArg(clang::driver::options::OPT_mcpu_EQ))
665 if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
667 else if (const Arg *A = Args.getLastArg(options::OPT_march_EQ))
673 return riscv::getRISCVTargetCPU(Args, T);
677 if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
684 return sparc::getSparcTargetCPU(D, Args, T);
688 return x86::getX86TargetCPU(D, Args, T);
692 toolchains::HexagonToolChain::GetTargetCPUVersion(Args).str();
695 return getLanaiTargetCPU(Args);
698 return systemz::getSystemZTargetCPU(Args, T);
702 return getAMDGPUTargetGPU(T, Args);
706 return std::string(getWebAssemblyTargetCPU(Args));
710 return loongarch::getLoongArchTargetCPU(Args, T);
713 if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
721 const ArgList &Args,
723 handleTargetFeaturesGroup(D, Triple, Args, Features,
728 const ArgList &Args, ArgStringList &CmdArgs,
738 mips::getMIPSTargetFeatures(D, Triple, Args, Features);
744 arm::getARMTargetFeatures(D, Triple, Args, Features, ForAS);
750 ppc::getPPCTargetFeatures(D, Triple, Args, Features);
754 riscv::getRISCVTargetFeatures(D, Triple, Args, Features);
757 systemz::getSystemZTargetFeatures(D, Args, Features);
762 aarch64::getAArch64TargetFeatures(D, Triple, Args, Features, ForAS);
766 x86::getX86TargetFeatures(D, Triple, Args, Features);
769 hexagon::getHexagonTargetFeatures(D, Triple, Args, Features);
773 getWebAssemblyTargetFeatures(D, Triple, Args, Features);
778 sparc::getSparcTargetFeatures(D, Args, Features);
782 amdgpu::getAMDGPUTargetFeatures(D, Triple, Args, Features);
786 NVPTX::getNVPTXTargetFeatures(D, Triple, Args, Features);
789 m68k::getM68kTargetFeatures(D, Triple, Args, Features);
792 msp430::getMSP430TargetFeatures(D, Args, Features);
795 ve::getVETargetFeatures(D, Args, Features);
798 csky::getCSKYTargetFeatures(D, Triple, Args, CmdArgs, Features);
802 loongarch::getLoongArchTargetFeatures(D, Triple, Args, Features);
812 llvm::StringRef tools::getLTOParallelism(const ArgList &Args, const Driver &D) {
813 Arg *LtoJobsArg = Args.getLastArg(options::OPT_flto_jobs_EQ);
818 << LtoJobsArg->getAsString(Args) << LtoJobsArg->getValue();
828 const llvm::opt::ArgList &Args) {
830 Arg *A = Args.getLastArg(options::OPT_mtls_dialect_EQ);
855 void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args,
861 const char *Linker = Args.MakeArgString(ToolChain.GetLinkerPath());
863 const bool IsFatLTO = Args.hasArg(options::OPT_ffat_lto_objects);
864 const bool IsUnifiedLTO = Args.hasArg(options::OPT_funified_lto);
889 CmdArgs.push_back(Args.MakeArgString(Twine(PluginPrefix) + Plugin));
904 if (Args.hasArg(options::OPT_gdwarf_aranges)) {
905 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
910 Arg *ArgVecLib = Args.getLastArg(options::OPT_fveclib);
927 CmdArgs.push_back(Args.MakeArgString(
935 std::string CPU = getCPUName(D, Args, Triple);
938 Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash + "mcpu=" + CPU));
940 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
957 Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash + "O" + OOpt));
959 CmdArgs.push_back(Args.MakeArgString(Twine("--lto-CGO") + OOpt));
963 if (Args.hasArg(options::OPT_gsplit_dwarf))
964 CmdArgs.push_back(Args.MakeArgString(
968 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + "thinlto"));
970 CmdArgs.push_back(Args.MakeArgString(Twine("-bdbg:thinlto")));
976 Args.hasArg(options::OPT_fenable_matrix))
978 Args.MakeArgString(Twine(PluginOptPrefix) + "-enable-matrix"));
980 StringRef Parallelism = getLTOParallelism(Args, D);
982 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
986 if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel,
990 CmdArgs.push_back(Args.MakeArgString(
997 Args.getLastArg(options::OPT_gTune_Group, options::OPT_ggdbN_Group)) {
1000 Args.MakeArgString(Twine(PluginOptPrefix) + "-debugger-tune=lldb"));
1003 Args.MakeArgString(Twine(PluginOptPrefix) + "-debugger-tune=sce"));
1006 Args.MakeArgString(Twine(PluginOptPrefix) + "-debugger-tune=dbx"));
1009 Args.MakeArgString(Twine(PluginOptPrefix) + "-debugger-tune=gdb"));
1015 Args.MakeArgString(Twine(PluginOptPrefix) + "-no-integrated-as=1"));
1019 Arg *A = Args.getLastArg(options::OPT_g_Group);
1022 if (EnableDebugInfo && Args.hasFlag(options::OPT_gstrict_dwarf,
1025 Args.MakeArgString(Twine(PluginOptPrefix) + "-strict-dwarf=true"));
1027 for (const Arg *A : Args.filtered_reverse(options::OPT_mabi_EQ)) {
1033 Args.MakeArgString(Twine(PluginOptPrefix) + "-vec-extabi"));
1042 if (Args.hasFlag(options::OPT_ffunction_sections,
1045 Args.MakeArgString(Twine(PluginOptPrefix) + "-function-sections=1"));
1046 else if (Args.hasArg(options::OPT_fno_function_sections))
1048 Args.MakeArgString(Twine(PluginOptPrefix) + "-function-sections=0"));
1051 if (Args.hasFlag(options::OPT_fdata_sections, options::OPT_fno_data_sections,
1054 Args.MakeArgString(Twine(PluginOptPrefix) + "-data-sections=1"));
1055 } else if (Args.hasArg(options::OPT_fno_data_sections)) {
1058 Args.MakeArgString(Twine(PluginOptPrefix) + "-data-sections=0"));
1061 if (Args.hasArg(options::OPT_mxcoff_roptr) ||
1062 Args.hasArg(options::OPT_mno_xcoff_roptr)) {
1063 bool HasRoptr = Args.hasFlag(options::OPT_mxcoff_roptr,
1078 Args.MakeArgString(Twine(PluginOptPrefix) + "-mxcoff-roptr"));
1083 if (auto *A = Args.getLastArg(options::OPT_fsplit_machine_functions,
1086 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
1090 if (Arg *A = getLastProfileSampleUseArg(Args)) {
1095 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
1099 if (auto *CSPGOGenerateArg = getLastCSProfileGenerateArg(Args)) {
1100 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash +
1106 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash +
1110 Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash +
1112 } else if (auto *ProfileUseArg = getLastProfileUseArg(Args)) {
1117 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + ExtraDash +
1122 if (Args.hasFlag(options::OPT_fjmc, options::OPT_fno_jmc, false)) {
1124 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) +
1130 if (Args.hasFlag(options::OPT_femulated_tls, options::OPT_fno_emulated_tls,
1133 Args.MakeArgString(Twine(PluginOptPrefix) + "-emulated-tls"));
1135 if (isTLSDESCEnabled(ToolChain, Args))
1137 Args.MakeArgString(Twine(PluginOptPrefix) + "-enable-tlsdesc"));
1139 if (Args.hasFlag(options::OPT_fstack_size_section,
1142 Args.MakeArgString(Twine(PluginOptPrefix) + "-stack-size-section"));
1145 SmallString<128> StatsFile = getStatsFileName(Args, Output, Input, D);
1148 Args.MakeArgString(Twine(PluginOptPrefix) + "stats-file=" + StatsFile));
1151 if (Arg *A = Args.getLastArg(options::OPT_fcrash_diagnostics_dir))
1152 CmdArgs.push_back(Args.MakeArgString(
1155 addX86AlignBranchArgs(D, Args, CmdArgs, /*IsLTO=*/true, PluginOptPrefix);
1158 renderRpassOptions(Args, CmdArgs, PluginOptPrefix);
1162 if (willEmitRemarks(Args))
1163 renderRemarksOptions(Args, CmdArgs, ToolChain.getEffectiveTriple(), Input,
1167 renderRemarksHotnessOptions(Args, CmdArgs, PluginOptPrefix);
1169 addMachineOutlinerArgs(D, Args, CmdArgs, ToolChain.getEffectiveTriple(),
1175 for (const Arg *A : Args.filtered(options::OPT_Wa_COMMA)) {
1203 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + "-crel"));
1211 Args.MakeArgString(Twine(PluginOptPrefix) + "-implicit-mapsyms"));
1213 if (Args.hasArg(options::OPT_ftime_report))
1215 Args.MakeArgString(Twine(PluginOptPrefix) + "-time-passes"));
1219 const ArgList &Args,
1226 CmdArgs.push_back(Args.MakeArgString("-L" + DefaultLibPath));
1229 void tools::addArchSpecificRPath(const ToolChain &TC, const ArgList &Args,
1231 if (!Args.hasFlag(options::OPT_frtlib_add_rpath,
1242 CmdArgs.push_back(Args.MakeArgString(CandidateRPath));
1248 const ToolChain &TC, const ArgList &Args,
1251 if (!Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
1254 if (Args.hasFlag(options::OPT_foffload_via_llvm,
1260 Driver::OpenMPRuntimeKind RTKind = TC.getDriver().getOpenMPRuntime(Args);
1292 if (IsOffloadingHost && !Args.hasArg(options::OPT_nogpulib))
1295 addArchSpecificRPath(TC, Args, CmdArgs);
1297 addOpenMPRuntimeLibraryPath(TC, Args, CmdArgs);
1304 const llvm::opt::ArgList &Args,
1318 Args.MakeArgString(Twine(Targets) + llvm::join(Triples, ",")));
1322 void tools::addFortranRuntimeLibs(const ToolChain &TC, const ArgList &Args,
1335 addAsNeededOption(TC, Args, CmdArgs, /*as_needed=*/true);
1336 CmdArgs.push_back(Args.MakeArgString("-l" + F128LibName));
1338 addAsNeededOption(TC, Args, CmdArgs, /*as_needed=*/false);
1342 addArchSpecificRPath(TC, Args, CmdArgs);
1346 if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
1349 TC.getDriver().getOpenMPRuntime(Args);
1350 ToolChain::RuntimeLibType RuntimeLib = TC.GetRuntimeLibType(Args);
1357 const llvm::opt::ArgList &Args,
1367 CmdArgs.push_back(Args.MakeArgString("-libpath:" + DefaultLibPath));
1369 CmdArgs.push_back(Args.MakeArgString("-L" + DefaultLibPath));
1372 static void addSanitizerRuntime(const ToolChain &TC, const ArgList &Args,
1379 Args, Sanitizer, IsShared ? ToolChain::FT_Shared : ToolChain::FT_Static));
1383 addArchSpecificRPath(TC, Args, CmdArgs);
1389 static bool addSanitizerDynamicList(const ToolChain &TC, const ArgList &Args,
1392 bool LinkerIsGnuLd = solaris::isLinkerGnuLd(TC, Args);
1398 SmallString<128> SanRT(TC.getCompilerRT(Args, Sanitizer));
1400 CmdArgs.push_back(Args.MakeArgString("--dynamic-list=" + SanRT + ".syms"));
1407 const llvm::opt::ArgList &Args,
1412 bool LinkerIsGnuLd = solaris::isLinkerGnuLd(TC, Args);
1428 const llvm::opt::ArgList &Args,
1432 addAsNeededOption(TC, Args, CmdArgs, false);
1460 collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
1467 const SanitizerArgs &SanArgs = TC.getSanitizerArgs(Args);
1472 if (!Args.hasArg(options::OPT_shared) && !TC.getTriple().isAndroid())
1477 if (!Args.hasArg(options::OPT_shared) && !TC.getTriple().isAndroid())
1500 if (!Args.hasArg(options::OPT_shared))
1516 if (Args.hasArg(options::OPT_shared)) {
1604 bool tools::addSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
1606 const SanitizerArgs &SanArgs = TC.getSanitizerArgs(Args);
1610 collectSanitizerRuntimes(TC, Args, SharedRuntimes, StaticRuntimes,
1618 CmdArgs.push_back(Args.MakeArgString(S));
1623 !Args.hasArg(options::OPT_shared)) {
1625 addSanitizerRuntime(TC, Args, CmdArgs, "fuzzer", false, true);
1627 addSanitizerRuntime(TC, Args, CmdArgs, "fuzzer_interceptors", false,
1629 if (!Args.hasArg(clang::driver::options::OPT_nostdlibxx)) {
1630 bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
1631 !Args.hasArg(options::OPT_static);
1634 TC.AddCXXStdlibLibArgs(Args, CmdArgs);
1641 addSanitizerRuntime(TC, Args, CmdArgs, RT, true, false);
1643 addSanitizerRuntime(TC, Args, CmdArgs, RT, false, true);
1646 addSanitizerRuntime(TC, Args, CmdArgs, RT, false, true);
1647 AddExportDynamic |= !addSanitizerDynamicList(TC, Args, CmdArgs, RT);
1650 addSanitizerRuntime(TC, Args, CmdArgs, RT, false, false);
1651 AddExportDynamic |= !addSanitizerDynamicList(TC, Args, CmdArgs, RT);
1667 Args.MakeArgString("--android-memtag-mode=" + SanArgs.getMemtagMode()));
1677 bool tools::addXRayRuntime(const ToolChain&TC, const ArgList &Args, ArgStringList &CmdArgs) {
1678 if (Args.hasArg(options::OPT_shared)) {
1681 CmdArgs.push_back(TC.getCompilerRTArgString(Args, "xray-dso"));
1687 CmdArgs.push_back(TC.getCompilerRTArgString(Args, "xray"));
1689 CmdArgs.push_back(TC.getCompilerRTArgString(Args, Mode));
1698 const llvm::opt::ArgList &Args,
1700 addAsNeededOption(TC, Args, CmdArgs, false);
1712 bool tools::areOptimizationsEnabled(const ArgList &Args) {
1714 if (Arg *A = Args.getLastArg(options::OPT_O_Group))
1720 const char *tools::SplitDebugName(const JobAction &JA, const ArgList &Args,
1728 if (Arg *A = Args.getLastArg(options::OPT_gsplit_dwarf_EQ))
1730 return Args.MakeArgString(Output.getFilename());
1733 if (const Arg *A = Args.getLastArg(options::OPT_dumpdir)) {
1736 Arg *FinalOutput = Args.getLastArg(options::OPT_o, options::OPT__SLASH_o);
1737 if (FinalOutput && Args.hasArg(options::OPT_c)) {
1743 return Args.MakeArgString(T);
1749 return Args.MakeArgString(T);
1753 const JobAction &JA, const ArgList &Args,
1767 Args.MakeArgString(TC.GetProgramPath(CLANG_DEFAULT_OBJCOPY));
1783 void tools::claimNoWarnArgs(const ArgList &Args) {
1786 Args.ClaimAllArgs(options::OPT_flto_EQ);
1787 Args.ClaimAllArgs(options::OPT_flto);
1788 Args.ClaimAllArgs(options::OPT_fno_lto);
1791 Arg *tools::getLastCSProfileGenerateArg(const ArgList &Args) {
1792 auto *CSPGOGenerateArg = Args.getLastArg(options::OPT_fcs_profile_generate,
1802 Arg *tools::getLastProfileUseArg(const ArgList &Args) {
1803 auto *ProfileUseArg = Args.getLastArg(
1815 Arg *tools::getLastProfileSampleUseArg(const ArgList &Args) {
1816 auto *ProfileSampleUseArg = Args.getLastArg(
1823 return Args.getLastArg(options::OPT_fprofile_sample_use_EQ);
1849 tools::ParsePICArgs(const ToolChain &ToolChain, const ArgList &Args) {
1853 bool PIE = ToolChain.isPIEDefault(Args);
1856 if (Triple.isOSBinFormatMachO() && Args.hasArg(options::OPT_static))
1861 Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext);
1908 Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
1913 LastPICArg == Args.getLastArg(options::OPT_fPIC, options::OPT_fpic,
1937 Arg *ModelArg = Args.getLastArg(options::OPT_mcmodel_EQ);
1963 if (Arg *A = Args.getLastArg(options::OPT_mdynamic_no_pic)) {
1994 Arg* LastROPIArg = Args.getLastArg(options::OPT_fropi, options::OPT_fno_ropi);
2001 Arg *LastRWPIArg = Args.getLastArg(options::OPT_frwpi, options::OPT_fno_rwpi);
2016 mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName);
2023 if(Args.hasArg(options::OPT_mno_abicalls))
2061 const ArgList &Args) {
2062 const Arg *A = Args.getLastArg(options::OPT_falign_functions,
2074 << A->getAsString(Args) << A->getValue();
2121 const ArgList &Args) {
2122 const Arg *A = Args.getLastArg(options::OPT_fdebug_default_version);
2131 << A->getAsString(Args) << A->getValue();
2144 const Arg *tools::getDwarfNArg(const ArgList &Args) {
2145 return Args.getLastArg(options::OPT_gdwarf_2, options::OPT_gdwarf_3,
2151 const llvm::opt::ArgList &Args) {
2152 unsigned DwarfVersion = ParseDebugDefaultVersion(TC, Args);
2153 if (const Arg *GDwarfN = getDwarfNArg(Args))
2167 void tools::AddAssemblerKPIC(const ToolChain &ToolChain, const ArgList &Args,
2172 std::tie(RelocationModel, PICLevel, IsPIE) = ParsePICArgs(ToolChain, Args);
2180 bool tools::isObjCAutoRefCount(const ArgList &Args) {
2181 return Args.hasFlag(options::OPT_fobjc_arc, options::OPT_fno_objc_arc, false);
2187 const ArgList &Args) {
2188 if (Args.hasArg(options::OPT_static_libgcc) ||
2189 Args.hasArg(options::OPT_static) || Args.hasArg(options::OPT_static_pie) ||
2193 if (Args.hasArg(options::OPT_shared_libgcc))
2212 ArgStringList &CmdArgs, const ArgList &Args) {
2213 ToolChain::UnwindLibType UNW = TC.GetUnwindLibType(Args);
2226 LibGccType LGT = getLibGccType(TC, D, Args);
2232 addAsNeededOption(TC, Args, CmdArgs, true);
2266 addAsNeededOption(TC, Args, CmdArgs, false);
2270 ArgStringList &CmdArgs, const ArgList &Args) {
2271 LibGccType LGT = getLibGccType(TC, D, Args);
2275 AddUnwindLibrary(TC, D, CmdArgs, Args);
2282 ArgStringList &CmdArgs, const ArgList &Args) {
2284 ToolChain::RuntimeLibType RLT = TC.GetRuntimeLibType(Args);
2288 CmdArgs.push_back(TC.getCompilerRTArgString(Args, "builtins"));
2289 AddUnwindLibrary(TC, D, CmdArgs, Args);
2296 Arg *A = Args.getLastArg(options::OPT_rtlib_EQ);
2302 AddLibgcc(TC, D, CmdArgs, Args);
2309 if (TC.getTriple().isAndroid() && !Args.hasArg(options::OPT_static) &&
2310 !Args.hasArg(options::OPT_static_pie))
2314 SmallString<128> tools::getStatsFileName(const llvm::opt::ArgList &Args,
2318 const Arg *A = Args.getLastArg(options::OPT_save_stats_EQ);
2329 D.Diag(diag::err_drv_invalid_value) << A->getAsString(Args) << SaveStats;
2355 void tools::addX86AlignBranchArgs(const Driver &D, const ArgList &Args,
2361 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + Arg));
2364 CmdArgs.push_back(Args.MakeArgString(Arg));
2368 if (Args.hasArg(options::OPT_mbranches_within_32B_boundaries)) {
2371 if (const Arg *A = Args.getLastArg(options::OPT_malign_branch_boundary_EQ)) {
2382 if (const Arg *A = Args.getLastArg(options::OPT_malign_branch_EQ)) {
2395 if (const Arg *A = Args.getLastArg(options::OPT_mpad_max_prefix_size_EQ)) {
2718 getAMDGPUCodeObjectArgument(const Driver &D, const llvm::opt::ArgList &Args) {
2719 return Args.getLastArg(options::OPT_mcode_object_version_EQ);
2723 const llvm::opt::ArgList &Args) {
2727 if (auto *CodeObjArg = getAMDGPUCodeObjectArgument(D, Args)) {
2735 << CodeObjArg->getAsString(Args) << CodeObjArg->getValue();
2747 const llvm::opt::ArgList &Args) {
2749 if (auto *CodeObjArg = getAMDGPUCodeObjectArgument(D, Args))
2755 const Driver &D, const llvm::opt::ArgList &Args) {
2756 return getAMDGPUCodeObjectArgument(D, Args) != nullptr;
2760 const llvm::opt::ArgList &Args,
2767 CmdArgs.push_back(Args.MakeArgString(Twine(PluginOptPrefix) + Arg));
2770 CmdArgs.push_back(Args.MakeArgString(Arg));
2774 if (Arg *A = Args.getLastArg(options::OPT_moutline,
2792 Args.getLastArg(options::OPT_fcodegen_data_generate_EQ);
2793 auto *CodeGenDataUseArg = Args.getLastArg(options::OPT_fcodegen_data_use_EQ);
2798 << CodeGenDataGenArg->getAsString(Args)
2799 << CodeGenDataUseArg->getAsString(Args);
2879 const llvm::opt::ArgList &Args,
2882 !Args.hasArg(options::OPT_nostdlib) &&
2883 !Args.hasArg(options::OPT_no_hip_rt) && !Args.hasArg(options::OPT_r)) {
2884 TC.AddHIPRuntimeLibArgs(Args, CmdArgs);
2887 for (auto *Arg : Args.filtered(options::OPT_no_hip_rt)) {
2894 const llvm::opt::ArgList &Args,
2897 if (Arg *A = Args.getLastArg(options::OPT_moutline_atomics,
2912 } else if (Triple.isAArch64() && TC.IsAArch64OutlineAtomicsDefault(Args)) {
2930 void tools::addMCModel(const Driver &D, const llvm::opt::ArgList &Args,
2934 if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) {
2944 << A->getAsString(Args) << "-fno-pic";
2947 Args.hasFlagNoClaim(options::OPT_fplt, options::OPT_fno_plt, false))
2949 << A->getAsString(Args) << "-fplt";
2963 << A->getAsString(Args) << "-fpic";
2987 CmdArgs.push_back(Args.MakeArgString("-mcmodel=" + CM));
2997 if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) {
3001 if (Arg *A = Args.getLastArg(options::OPT_mlarge_data_threshold_EQ)) {
3006 A->render(Args, CmdArgs);
3016 void tools::handleColorDiagnosticsArgs(const Driver &D, const ArgList &Args,
3022 Args.getLastArg(options::OPT_fcolor_diagnostics,
3024 if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_color_EQ)) {
3051 const llvm::opt::ArgList &Args) {
3056 for (const auto &Arg : Args)
3057 Arg->render(Args, OriginalArgs);
3068 return Args.MakeArgString(Flags);
3072 const llvm::opt::ArgList &Args,
3080 Args.hasFlag(options::OPT_frecord_command_line,
3083 Args.hasFlag(options::OPT_grecord_command_line,
3088 << Args.getLastArg(options::OPT_frecord_command_line)->getAsString(Args)
3094 void tools::renderCommonIntegerOverflowOptions(const ArgList &Args,
3098 bool StrictOverflow = Args.hasFlag(options::OPT_fstrict_overflow,
3100 if (Arg *A = Args.getLastArg(options::OPT_fwrapv, options::OPT_fno_wrapv)) {
3106 if (Arg *A = Args.getLastArg(options::OPT_fwrapv_pointer,