Lines Matching refs:Args

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