Home | History | Annotate | Download | only in Driver

Lines Matching defs:Args

53 static void addAssemblerKPIC(const ArgList &Args, ArgStringList &CmdArgs) {
54 Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
70 static void CheckPreprocessingOptions(const Driver &D, const ArgList &Args) {
71 if (Arg *A = Args.getLastArg(options::OPT_C, options::OPT_CC)) {
72 if (!Args.hasArg(options::OPT_E) && !Args.hasArg(options::OPT__SLASH_P) &&
73 !Args.hasArg(options::OPT__SLASH_EP) && !D.CCCIsCPP()) {
75 << A->getBaseArg().getAsString(Args)
83 static void CheckCodeGenerationOptions(const Driver &D, const ArgList &Args) {
85 if (Args.hasArg(options::OPT_static))
86 if (const Arg *A = Args.getLastArg(options::OPT_dynamic,
89 << A->getAsString(Args) << "-static";
138 static void addDirectoryList(const ArgList &Args,
160 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + "."));
167 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + Dirs.substr(0, Delim)));
170 CmdArgs.push_back(Args.MakeArgString(Dirs.substr(0, Delim)));
178 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + "."));
185 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + Dirs));
188 CmdArgs.push_back(Args.MakeArgString(Dirs));
194 const InputInfoList &Inputs, const ArgList &Args,
200 Args.AddAllArgValues(CmdArgs, options::OPT_Zlinker_input);
224 TC.AddCXXStdlibLibArgs(Args, CmdArgs);
226 TC.AddCCKextLibArgs(Args, CmdArgs);
230 A.render(Args, CmdArgs);
232 A.renderAsInput(Args, CmdArgs);
239 addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH");
244 static bool isObjCAutoRefCount(const ArgList &Args) {
245 return Args.hasFlag(options::OPT_fobjc_arc, options::OPT_fno_objc_arc, false);
249 static bool isObjCRuntimeLinked(const ArgList &Args) {
250 if (isObjCAutoRefCount(Args)) {
251 Args.ClaimAllArgs(options::OPT_fobjc_link_runtime);
254 return Args.hasArg(options::OPT_fobjc_link_runtime);
268 const ArgList &Args,
274 CheckPreprocessingOptions(D, Args);
276 Args.AddLastArg(CmdArgs, options::OPT_C);
277 Args.AddLastArg(CmdArgs, options::OPT_CC);
280 if ((A = Args.getLastArg(options::OPT_M, options::OPT_MM)) ||
281 (A = Args.getLastArg(options::OPT_MD)) ||
282 (A = Args.getLastArg(options::OPT_MMD))) {
285 if (Arg *MF = Args.getLastArg(options::OPT_MF)) {
294 DepFile = getDependencyFileName(Args, Inputs);
301 if (!Args.hasArg(options::OPT_MT) && !Args.hasArg(options::OPT_MQ)) {
306 Arg *OutputOpt = Args.getLastArg(options::OPT_o);
315 DepTarget = Args.MakeArgString(llvm::sys::path::filename(P));
321 CmdArgs.push_back(Args.MakeArgString(Quoted));
328 !Args.hasArg(options::OPT_fno_module_file_deps)) ||
329 Args.hasArg(options::OPT_fmodule_file_deps))
333 if (Args.hasArg(options::OPT_MG)) {
340 Args.AddLastArg(CmdArgs, options::OPT_MP);
342 // Convert all -MQ <target> args to -MT <quoted target>
343 for (arg_iterator it = Args.filtered_begin(options::OPT_MT,
345 ie = Args.filtered_end(); it != ie; ++it) {
353 CmdArgs.push_back(Args.MakeArgString(Quoted));
357 A->render(Args, CmdArgs);
367 for (arg_iterator it = Args.filtered_begin(options::OPT_clang_i_Group),
368 ie = Args.filtered_end(); it != ie; ++it) {
411 CmdArgs.push_back(Args.MakeArgString(P));
416 << P << A->getAsString(Args);
423 A->render(Args, CmdArgs);
426 Args.AddAllArgs(CmdArgs, options::OPT_D, options::OPT_U);
427 Args.AddAllArgs(CmdArgs, options::OPT_I_Group, options::OPT_F,
436 Args.AddAllArgValues(CmdArgs, options::OPT_Wp_COMMA,
440 if (Arg *A = Args.getLastArg(options::OPT_I_))
441 D.Diag(diag::err_drv_I_dash_not_supported) << A->getAsString(Args);
447 if (!Args.hasArg(options::OPT_isysroot)) {
458 addDirectoryList(Args, CmdArgs, "-I", "CPATH");
460 addDirectoryList(Args, CmdArgs, "-c-isystem", "C_INCLUDE_PATH");
462 addDirectoryList(Args, CmdArgs, "-cxx-isystem", "CPLUS_INCLUDE_PATH");
464 addDirectoryList(Args, CmdArgs, "-objc-isystem", "OBJC_INCLUDE_PATH");
466 addDirectoryList(Args, CmdArgs, "-objcxx-isystem", "OBJCPLUS_INCLUDE_PATH");
470 getToolChain().AddClangCXXStdlibIncludeArgs(Args, CmdArgs);
473 getToolChain().AddClangSystemIncludeArgs(Args, CmdArgs);
517 const ArgList &Args,
533 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args);
541 const ArgList &Args,
613 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args);
618 StringRef tools::arm::getARMFloatABI(const Driver &D, const ArgList &Args,
621 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
632 << A->getAsString(Args);
648 arm::getLLVMArchSuffixForARM(arm::getARMTargetCPU(Args, Triple));
691 arm::getLLVMArchSuffixForARM(arm::getARMTargetCPU(Args, Triple));
713 const ArgList &Args,
716 StringRef FloatABI = tools::arm::getARMFloatABI(D, Args, Triple);
740 if (const Arg *A = Args.getLastArg(options::OPT_mfpu_EQ))
741 getARMFPUFeatures(D, A, Args, Features);
742 if (const Arg *A = Args.getLastArg(options::OPT_mhwdiv_EQ))
743 getARMHWDivFeatures(D, A, Args, Features);
754 if (Arg *A = Args.getLastArg(options::OPT_mcrc, options::OPT_mnocrc)) {
762 void Clang::AddARMTargetArgs(const ArgList &Args,
767 std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
769 std::string CPUName = arm::getARMTargetCPU(Args, Triple);
776 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) {
815 StringRef FloatABI = tools::arm::getARMFloatABI(D, Args, Triple);
851 if (Arg *A = Args.getLastArg(options::OPT_mno_unaligned_access,
865 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge,
874 if (!Args.hasFlag(options::OPT_mimplicit_float,
882 if (Args.hasArg(options::OPT_ffixed_r9)) {
890 static std::string getAArch64TargetCPU(const ArgList &Args) {
894 if ((A = Args.getLastArg(options::OPT_mtune_EQ))) {
896 } else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) {
909 if (Args.getLastArg(options::OPT_arch))
915 void Clang::AddAArch64TargetArgs(const ArgList &Args,
917 std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
920 if (!Args.hasFlag(options::OPT_mred_zone, options::OPT_mno_red_zone, true) ||
921 Args.hasArg(options::OPT_mkernel) ||
922 Args.hasArg(options::OPT_fapple_kext))
925 if (!Args.hasFlag(options::OPT_mimplicit_float,
930 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
940 if (Arg *A = Args.getLastArg(options::OPT_mno_unaligned_access,
949 if (Arg *A = Args
963 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge,
972 if (Args.hasArg(options::OPT_ffixed_x18)) {
980 void mips::getMipsCPUAndABI(const ArgList &Args,
999 if (Arg *A = Args.getLastArg(options::OPT_march_EQ,
1003 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) {
1059 static StringRef getMipsFloatABI(const Driver &D, const ArgList &Args) {
1061 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
1071 D.Diag(diag::err_drv_invalid_mfloat_abi) << A->getAsString(Args);
1088 static void AddTargetFeature(const ArgList &Args,
1092 if (Arg *A = Args.getLastArg(OnOpt, OffOpt)) {
1094 Features.push_back(Args.MakeArgString("+" + FeatureName));
1096 Features.push_back(Args.MakeArgString("-" + FeatureName));
1101 const ArgList &Args,
1105 mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName);
1108 AddTargetFeature(Args, Features, options::OPT_mno_abicalls,
1111 StringRef FloatABI = getMipsFloatABI(D, Args);
1119 if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {
1140 AddTargetFeature(Args, Features, options::OPT_msingle_float,
1142 AddTargetFeature(Args, Features, options::OPT_mips16, options::OPT_mno_mips16,
1144 AddTargetFeature(Args, Features, options::OPT_mmicromips,
1146 AddTargetFeature(Args, Features, options::OPT_mdsp, options::OPT_mno_dsp,
1148 AddTargetFeature(Args, Features, options::OPT_mdspr2, options::OPT_mno_dspr2,
1150 AddTargetFeature(Args, Features, options::OPT_mmsa, options::OPT_mno_msa,
1155 if (Arg *A = Args.getLastArg(options::OPT_mfp32, options::OPT_mfpxx,
1158 Features.push_back(Args.MakeArgString("-fp64"));
1160 Features.push_back(Args.MakeArgString("+fpxx"));
1161 Features.push_back(Args.MakeArgString("+nooddspreg"));
1163 Features.push_back(Args.MakeArgString("+fp64"));
1165 Features.push_back(Args.MakeArgString("+fpxx"));
1166 Features.push_back(Args.MakeArgString("+nooddspreg"));
1169 AddTargetFeature(Args, Features, options::OPT_mno_odd_spreg,
1173 void Clang::AddMIPSTargetArgs(const ArgList &Args,
1179 mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName);
1184 StringRef FloatABI = getMipsFloatABI(D, Args);
1199 if (Arg *A = Args.getLastArg(options::OPT_mxgot, options::OPT_mno_xgot)) {
1206 if (Arg *A = Args.getLastArg(options::OPT_mldc1_sdc1,
1214 if (Arg *A = Args.getLastArg(options::OPT_mcheck_zero_division,
1222 if (Arg *A = Args.getLastArg(options::OPT_G)) {
1225 CmdArgs.push_back(Args.MakeArgString("-mips-ssection-threshold=" + v));
1231 static std::string getPPCTargetCPU(const ArgList &Args) {
1232 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
1294 static void getPPCTargetFeatures(const ArgList &Args,
1296 for (arg_iterator it = Args.filtered_begin(options::OPT_m_ppc_Features_Group),
1297 ie = Args.filtered_end();
1317 Features.push_back(Args.MakeArgString((IsNegative ? "-" : "+") + Name));
1321 AddTargetFeature(Args, Features, options::OPT_faltivec,
1325 void Clang::AddPPCTargetArgs(const ArgList &Args,
1329 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) {
1338 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
1340 HasQPX = Args.hasFlag(options::OPT_mqpx, options::OPT_mno_qpx, HasQPX);
1362 bool ppc::hasPPCAbiArg(const ArgList &Args, const char *Value) {
1363 Arg *A = Args.getLastArg(options::OPT_mabi_EQ);
1368 static std::string getR600TargetGPU(const ArgList &Args) {
1369 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
1384 static void getSparcTargetFeatures(const ArgList &Args,
1388 Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float)) {
1396 void Clang::AddSparcTargetArgs(const ArgList &Args,
1402 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
1428 static const char *getSystemZTargetCPU(const ArgList &Args) {
1429 if (const Arg *A = Args
1434 static void getSystemZTargetFeatures(const ArgList &Args,
1437 if (Arg *A = Args.getLastArg(options::OPT_mhtm,
1446 static const char *getX86TargetCPU(const ArgList &Args,
1448 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
1463 return Args.MakeArgString(CPU);
1508 static std::string getCPUName(const ArgList &Args, const llvm::Triple &T) {
1515 return getAArch64TargetCPU(Args);
1521 return arm::getARMTargetCPU(Args, T);
1529 mips::getMipsCPUAndABI(Args, T, CPUName, ABIName);
1536 std::string TargetCPUName = getPPCTargetCPU(Args);
1553 if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
1559 return getX86TargetCPU(Args, T);
1562 return "hexagon" + toolchains::Hexagon_TC::GetTargetCPU(Args).str();
1565 return getSystemZTargetCPU(Args);
1569 return getR600TargetGPU(Args);
1573 static void AddGoldPlugin(const ToolChain &ToolChain, const ArgList &Args,
1580 CmdArgs.push_back(Args.MakeArgString(Plugin));
1586 std::string CPU = getCPUName(Args, ToolChain.getTriple());
1588 CmdArgs.push_back(Args.MakeArgString(Twine("-plugin-opt=mcpu=") + CPU));
1592 const ArgList &Args,
1595 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
1600 Features.push_back(Args.MakeArgString((F.second ? "+" : "-") +
1626 if (Arg *A = Args.getLastArg(options::OPT__SLASH_arch)) {
1634 Features.push_back(Args.MakeArgString("+" + Arch.lower()));
1643 Features.push_back(Args.MakeArgString("+" + Arch.lower()));
1647 D.Diag(clang::diag::warn_drv_unused_argument) << A->getAsString(Args);
1652 for (arg_iterator it = Args.filtered_begin(options::OPT_m_x86_Features_Group),
1653 ie = Args.filtered_end();
1666 Features.push_back(Args.MakeArgString((IsNegative ? "-" : "+") + Name));
1670 void Clang::AddX86TargetArgs(const ArgList &Args,
1672 if (!Args.hasFlag(options::OPT_mred_zone,
1675 Args.hasArg(options::OPT_mkernel) ||
1676 Args.hasArg(options::OPT_fapple_kext))
1681 bool NoImplicitFloat = (Args.hasArg(options::OPT_mkernel) ||
1682 Args.hasArg(options::OPT_fapple_kext));
1683 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
1694 if (Arg *A = Args.getLastArg(options::OPT_masm_EQ)) {
1698 CmdArgs.push_back(Args.MakeArgString("-x86-asm-syntax=" + Value));
1706 static inline bool HasPICArg(const ArgList &Args) {
1707 return Args.hasArg(options::OPT_fPIC)
1708 || Args.hasArg(options::OPT_fpic);
1711 static Arg *GetLastSmallDataThresholdArg(const ArgList &Args) {
1712 return Args.getLastArg(options::OPT_G,
1717 static std::string GetHexagonSmallDataThresholdValue(const ArgList &Args) {
1719 if (HasPICArg(Args))
1721 else if (Arg *A = GetLastSmallDataThresholdArg(Args)) {
1728 void Clang::AddHexagonTargetArgs(const ArgList &Args,
1734 std::string SmallDataThreshold = GetHexagonSmallDataThresholdValue(Args);
1737 CmdArgs.push_back(Args.MakeArgString(
1741 if (!Args.hasArg(options::OPT_fno_short_enums))
1743 if (Args.getLastArg(options::OPT_mieee_rnd_near)) {
1802 const ArgList &Args,
1825 const ArgList &Args,
1836 const ArgList &Args,
1850 const ArgList &Args,
1857 return getAArch64MicroArchFeaturesFromMtune(D, CPU, Args, Features);
1860 static void getAArch64TargetFeatures(const Driver &D, const ArgList &Args,
1866 if ((A = Args.getLastArg(options::OPT_march_EQ)))
1867 success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Features);
1868 else if ((A = Args.getLastArg(options::OPT_mcpu_EQ)))
1869 success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Features);
1870 else if (Args.hasArg(options::OPT_arch))
1871 success = getAArch64ArchFeaturesFromMcpu(D, getAArch64TargetCPU(Args), Args,
1874 if (success && (A = Args.getLastArg(options::OPT_mtune_EQ)))
1876 getAArch64MicroArchFeaturesFromMtune(D, A->getValue(), Args, Features);
1877 else if (success && (A = Args.getLastArg(options::OPT_mcpu_EQ)))
1879 getAArch64MicroArchFeaturesFromMcpu(D, A->getValue(), Args, Features);
1880 else if (Args.hasArg(options::OPT_arch))
1881 success = getAArch64MicroArchFeaturesFromMcpu(D, getAArch64TargetCPU(Args),
1882 Args, Features);
1885 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args);
1887 if (Args.getLastArg(options::OPT_mgeneral_regs_only)) {
1894 if (Arg *A = Args.getLastArg(options::OPT_mcrc,
1904 const ArgList &Args, ArgStringList &CmdArgs,
1914 getMIPSTargetFeatures(D, Triple, Args, Features);
1921 getARMTargetFeatures(D, Triple, Args, Features, ForAS);
1927 getPPCTargetFeatures(Args, Features);
1931 getSparcTargetFeatures(Args, Features);
1934 getSystemZTargetFeatures(Args, Features);
1938 getAArch64TargetFeatures(D, Args, Features);
1942 getX86TargetFeatures(D, Triple, Args, Features);
1987 static bool exceptionSettings(const ArgList &Args, const llvm::Triple &Triple) {
1988 if (Arg *A = Args.getLastArg(options::OPT_fexceptions,
2000 static void addExceptionArgs(const ArgList &Args, types::ID InputType,
2010 Args.ClaimAllArgs(options::OPT_fexceptions);
2011 Args.ClaimAllArgs(options::OPT_fno_exceptions);
2012 Args.ClaimAllArgs(options::OPT_fobjc_exceptions);
2013 Args.ClaimAllArgs(options::OPT_fno_objc_exceptions);
2014 Args.ClaimAllArgs(options::OPT_fcxx_exceptions);
2015 Args.ClaimAllArgs(options::OPT_fno_cxx_exceptions);
2020 bool EH = exceptionSettings(Args, Triple);
2025 Args.hasFlag(options::OPT_fobjc_exceptions,
2036 Arg *ExceptionArg = Args.getLastArg(
2054 << RTTIArg->getAsString(Args) << ExceptionArg->getAsString(Args);
2070 static bool ShouldDisableAutolink(const ArgList &Args,
2078 return !Args.hasFlag(options::OPT_fautolink, options::OPT_fno_autolink,
2082 static bool ShouldDisableDwarfDirectory(const ArgList &Args,
2084 bool UseDwarfDirectory = Args.hasFlag(options::OPT_fdwarf_directory_asm,
2104 static bool UseRelaxAll(Compilation &C, const ArgList &Args) {
2107 if (Arg *A = Args.getLastArg(options::OPT_O_Group))
2120 return Args.hasFlag(options::OPT_mrelax_all, options::OPT_mno_relax_all,
2125 const ArgList &Args,
2128 if (UseRelaxAll(C, Args))
2141 for (arg_iterator it = Args.filtered_begin(options::OPT_Wa_COMMA,
2143 ie = Args.filtered_end(); it != ie; ++it) {
2235 static void addClangRT(const ToolChain &TC, const ArgList &Args,
2237 CmdArgs.push_back(Args.MakeArgString(getCompilerRT(TC, "builtins")));
2247 static void addProfileRT(const ToolChain &TC, const ArgList &Args,
2249 if (!(Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
2251 Args.hasArg(options::OPT_fprofile_generate) ||
2252 Args.hasArg(options::OPT_fprofile_instr_generate) ||
2253 Args.hasArg(options::OPT_fcreate_profile) ||
2254 Args.hasArg(options::OPT_coverage)))
2257 CmdArgs.push_back(Args.MakeArgString(getCompilerRT(TC, "profile")));
2260 static void addSanitizerRuntime(const ToolChain &TC, const ArgList &Args,
2267 CmdArgs.push_back(Args.MakeArgString(getCompilerRT(TC, Sanitizer, IsShared)));
2274 static bool addSanitizerDynamicList(const ToolChain &TC, const ArgList &Args,
2279 CmdArgs.push_back(Args.MakeArgString("--dynamic-list=" + SanRT + ".syms"));
2299 collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
2310 if (Args.hasArg(options::OPT_shared) ||
2341 static bool addSanitizerRuntimes(const ToolChain &TC, const ArgList &Args,
2345 collectSanitizerRuntimes(TC, Args
2348 addSanitizerRuntime(TC, Args, CmdArgs, RT, true);
2350 addSanitizerRuntime(TC, Args, CmdArgs, RT, false);
2353 addSanitizerRuntime(TC, Args, CmdArgs, RT, false);
2354 AddExportDynamic |= !addSanitizerDynamicList(TC, Args, CmdArgs, RT);
2363 static bool areOptimizationsEnabled(const ArgList &Args) {
2365 if (Arg *A = Args.getLastArg(options::OPT_O_Group))
2371 static bool shouldUseFramePointerForTarget(const ArgList &Args,
2388 return !areOptimizationsEnabled(Args);
2397 return !areOptimizationsEnabled(Args);
2408 static bool shouldUseFramePointer(const ArgList &Args,
2410 if (Arg *A = Args.getLastArg(options::OPT_fno_omit_frame_pointer,
2414 return shouldUseFramePointerForTarget(Args, Triple);
2417 static bool shouldUseLeafFramePointer(const ArgList &Args,
2419 if (Arg *A = Args.getLastArg(options::OPT_mno_omit_leaf_frame_pointer,
2426 return shouldUseFramePointerForTarget(Args, Triple);
2430 static void addDebugCompDirArg(const ArgList &Args, ArgStringList &CmdArgs) {
2434 CmdArgs.push_back(Args.MakeArgString(cwd));
2438 static const char *SplitDebugName(const ArgList &Args,
2440 Arg *FinalOutput = Args.getLastArg(options::OPT_o);
2441 if (FinalOutput && Args.hasArg(options::OPT_c)) {
2444 return Args.MakeArgString(T);
2448 Args.getLastArgValue(options::OPT_fdebug_compilation_dir));
2452 return Args.MakeArgString(F);
2458 const ArgList &Args, const InputInfo &Output,
2472 Args.MakeArgString(TC.GetProgramPath("objcopy"));
2483 static bool shouldEnableVectorizerAtOLevel(const ArgList &Args, bool isSlpVec) {
2484 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
2514 static void addDashXForInput(const ArgList &Args, const InputInfo &Input,
2518 if (Args.hasArg(options::OPT_verify_pch) && Input.getType() == types::TY_PCH)
2522 if (Args.hasArg(options::OPT_rewrite_objc))
2544 static void claimNoWarnArgs(const ArgList &Args) {
2547 Args.ClaimAllArgs(options::OPT_flto);
2548 Args.ClaimAllArgs(options::OPT_fno_lto);
2586 const ArgList &Args,
2588 bool KernelOrKext = Args.hasArg(options::OPT_mkernel,
2607 std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
2608 CmdArgs.push_back(Args.MakeArgString(TripleStr));
2639 if (Args.hasArg(options::OPT_rewrite_objc) &&
2640 !Args.hasArg(options::OPT_g_Group))
2646 CollectArgsForIntegratedAssembler(C, Args, CmdArgs, D);
2649 (void) Args.hasArg(options::OPT_force__cpusubtype__ALL);
2713 CmdArgs.push_back(getBaseInputName(Args, Inputs));
2717 if (Args.hasArg(options::OPT_static))
2730 if (!Args.hasArg(options::OPT__analyzer_no_default_checks)) {
2757 if (Arg *A = Args.getLastArg(options::OPT__analyzer_output))
2768 Args.AddAllArgValues(CmdArgs, options::OPT_Xanalyzer);
2771 CheckCodeGenerationOptions(D, Args);
2832 Arg *LastPICArg =Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
2866 if (Args.hasArg(options::OPT_static))
2869 if (Arg *A = Args.getLastArg(options::OPT_mdynamic_no_pic)) {
2905 if (Arg *A = Args.getLastArg(options::OPT_mthread_model))
2908 CmdArgs.push_back(Args.MakeArgString(getToolChain().getThreadModel()));
2910 Args.AddLastArg(CmdArgs, options::OPT_fveclib);
2912 if (!Args.hasFlag(options::OPT_fmerge_all_constants,
2918 if (Args.hasArg(options::OPT_frewrite_map_file) ||
2919 Args.hasArg(options::OPT_frewrite_map_file_EQ)) {
2921 MFI = Args.filtered_begin(options::OPT_frewrite_map_file,
2923 MFE = Args.filtered_end();
2931 if (Arg *A = Args.getLastArg(options::OPT_Wframe_larger_than_EQ)) {
2934 CmdArgs.push_back(Args.MakeArgString("-warn-stack-size=" + v));
2938 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) {
2943 if (Arg *A = Args.getLastArg(options::OPT_fpcc_struct_return,
2956 if (Args.hasFlag(options::OPT_mrtd, options::OPT_mno_rtd, false))
2959 if (shouldUseFramePointer(Args, getToolChain().getTriple()))
2961 if (!Args.hasFlag(options::OPT_fzero_initialized_in_bss,
2965 bool OFastEnabled = isOptimizationLevelFast(Args);
2973 if (!Args.hasFlag(options::OPT_fstrict_aliasing, StrictAliasingAliasOption,
2976 if (!Args.hasFlag(options::OPT_fstruct_path_tbaa,
2979 if (Args.hasFlag(options::OPT_fstrict_enums, options::OPT_fno_strict_enums,
2982 if (!Args.hasFlag(options::OPT_foptimize_sibling_calls,
2987 if (Args.hasArg(options::OPT_fsplit_stack))
3000 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
3010 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
3023 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
3045 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
3056 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
3067 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
3078 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
3099 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
3105 CmdArgs.push_back(Args.MakeArgString("-ffp-contract=" + Val));
3113 CmdArgs.push_back(Args.MakeArgString("-ffp-contract=fast"));
3122 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
3126 if (Arg *A = Args.getLastArg(options::OPT_ffinite_math_only,
3135 if (Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm,
3137 Args.hasArg(options::OPT_dA))
3141 Args.hasFlag(options::OPT_fintegrated_as, options::OPT_fno_integrated_as,
3146 if (Args.hasArg(options::OPT_fdebug_pass_structure)) {
3150 if (Args.hasArg(options::OPT_fdebug_pass_arguments)) {
3165 if (Args.hasArg(options::OPT_mms_bitfields)) {
3173 Args.hasFlag(options::OPT_fasynchronous_unwind_tables,
3178 if (Args.hasFlag(options::OPT_funwind_tables, options::OPT_fno_unwind_tables,
3182 getToolChain().addClangTargetOptions(Args, CmdArgs);
3184 if (Arg *A = Args.getLastArg(options::OPT_flimited_precision_EQ)) {
3190 (void) Args.hasArg(options::OPT_mtune_EQ);
3192 if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) {
3198 std::string ETripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
3200 std::string CPU = getCPUName(Args, ETriple);
3203 CmdArgs.push_back(Args.MakeArgString(CPU));
3206 if (const Arg *A = Args.getLastArg(options::OPT_mfpmath_EQ)) {
3212 getTargetFeatures(D, ETriple, Args, CmdArgs, false);
3223 AddARMTargetArgs(Args, CmdArgs, KernelOrKext);
3228 AddAArch64TargetArgs(Args, CmdArgs);
3235 AddMIPSTargetArgs(Args, CmdArgs);
3241 AddPPCTargetArgs(Args, CmdArgs);
3246 AddSparcTargetArgs(Args, CmdArgs);
3251 AddX86TargetArgs(Args, CmdArgs);
3255 AddHexagonTargetArgs(Args, CmdArgs);
3261 AddClangCLArgs(Args, CmdArgs);
3264 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
3269 if (!shouldUseLeafFramePointer(Args, getToolChain().getTriple()))
3275 if (!Args.hasArg(options::OPT_fallow_unsupported)) {
3280 if ((Unsupported = Args.getLastArg(options::OPT_fapple_kext)) ||
3281 (Unsupported = Args.getLastArg(options::OPT_mkernel)))
3287 Args.AddAllArgs(CmdArgs, options::OPT_v);
3288 Args.AddLastArg(CmdArgs, options::OPT_H);
3294 Args.AddLastArg(CmdArgs, options::OPT_P);
3295 Args.AddLastArg(CmdArgs, options::OPT_print_ivar_layout);
3305 Args.ClaimAllArgs(options::OPT_g_Group);
3306 if (Arg *A = Args.getLastArg(options::OPT_g_Group)) {
3338 Args.ClaimAllArgs(options::OPT_g_flags_Group);
3339 if (Args.hasFlag(options::OPT_gcolumn_info, options::OPT_gno_column_info,
3348 Args.hasArg(options::OPT_gsplit_dwarf)) {
3355 if (Args.hasArg(options::OPT_ggnu_pubnames)) {
3362 if (Args.hasArg(options::OPT_gdwarf_aranges)) {
3367 if (Args.hasFlag(options::OPT_fdebug_types_section,
3376 if (Args.hasFlag(options::OPT_ffunction_sections,
3381 if (Args.hasFlag(options::OPT_fdata_sections,
3386 if (!Args.hasFlag(options::OPT_funique_section_names,
3391 Args.AddAllArgs(CmdArgs, options::OPT_finstrument_functions);
3393 if (Args.hasArg(options::OPT_fprofile_instr_generate) &&
3394 (Args.hasArg(options::OPT_fprofile_instr_use) ||
3395 Args.hasArg(options::OPT_fprofile_instr_use_EQ)))
3399 Args.AddAllArgs(CmdArgs, options::OPT_fprofile_instr_generate);
3401 if (Arg *A = Args.getLastArg(options::OPT_fprofile_instr_use_EQ))
3402 A->render(Args, CmdArgs);
3403 else if (Args.hasArg(options::OPT_fprofile_instr_use))
3406 if (Args.hasArg(options::OPT_ftest_coverage) ||
3407 Args.hasArg(options::OPT_coverage))
3409 if (Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
3411 Args.hasArg(options::OPT_coverage))
3414 if (Args.hasArg(options::OPT_fcoverage_mapping) &&
3415 !Args.hasArg(options::OPT_fprofile_instr_generate))
3419 if (Args.hasArg(options::OPT_fcoverage_mapping))
3439 CmdArgs.push_back(Args.MakeArgString(CoverageFilename));
3444 if (Args.hasArg(options::OPT_nostdinc)) {
3448 if (Args.hasArg(options::OPT_nostdlibinc))
3450 Args.AddLastArg(CmdArgs, options::OPT_nostdincxx);
3451 Args.AddLastArg(CmdArgs, options::OPT_nobuiltininc);
3458 Args.AddLastArg(CmdArgs, options::OPT_working_directory);
3461 if (!Args.hasArg(options::OPT_fno_objc_arc, options::OPT_fobjc_arc)) {
3462 if (const Arg *A = Args.getLastArg(options::OPT_ccc_arcmt_check,
3480 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_report_output);
3481 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_emit_arc_errors);
3486 Args.ClaimAllArgs(options::OPT_ccc_arcmt_check);
3487 Args.ClaimAllArgs(options::OPT_ccc_arcmt_modify);
3488 Args.ClaimAllArgs(options::OPT_ccc_arcmt_migrate);
3491 if (const Arg *A = Args.getLastArg(options::OPT_ccc_objcmt_migrate)) {
3494 << A->getAsString(Args) << "-ccc-arcmt-migrate";
3499 if (!Args.hasArg(options::OPT_objcmt_migrate_literals,
3507 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals);
3508 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting);
3509 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property);
3512 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals);
3513 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting);
3514 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property);
3515 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_all);
3516 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readonly_property);
3517 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readwrite_property);
3518 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property_dot_syntax);
3519 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_annotation);
3520 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_instancetype);
3521 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_nsmacros);
3522 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_protocol_conformance);
3523 Args.AddLastArg(CmdArgs, options::OPT_objcmt_atomic_property);
3524 Args.AddLastArg(CmdArgs, options::OPT_objcmt_returns_innerpointer_property);
3525 Args.AddLastArg(CmdArgs, options::OPT_objcmt_ns_nonatomic_iosonly);
3526 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_designated_init);
3527 Args.AddLastArg(CmdArgs, options::OPT_objcmt_whitelist_dir_path);
3535 AddPreprocessingOptions(C, JA, D, Args, CmdArgs, Output, Inputs);
3541 Args.ClaimAllArgs(options::OPT_D);
3544 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
3549 A->render(Args, CmdArgs);
3554 for (arg_iterator it = Args.filtered_begin(
3556 ie = Args.filtered_end(); it != ie; ++it) {
3557 D.Diag(diag::warn_ignored_gcc_optimization) << (*it)->getAsString(Args);
3560 claimNoWarnArgs(Args);
3562 Args.AddAllArgs(CmdArgs, options::OPT_R_Group);
3563 Args.AddAllArgs(CmdArgs, options::OPT_W_Group);
3564 if (Args.hasFlag(options::OPT_pedantic, options::OPT_no_pedantic, false))
3566 Args.AddLastArg(CmdArgs, options::OPT_pedantic_errors);
3567 Args.AddLastArg(CmdArgs, options::OPT_w);
3574 if (Arg *Std = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi)) {
3581 Std->render(Args, CmdArgs);
3584 if (Arg *A = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi,
3588 A->render(Args, CmdArgs);
3597 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ,
3602 Args.AddLastArg(CmdArgs, options::OPT_ftrigraphs,
3619 Args.getLastArg(options::OPT_Wwrite_strings,
3630 Args.hasFlag(options::OPT_Wdeprecated, options::OPT_Wno_deprecated,
3636 if (Arg *Asm = Args.getLastArg(options::OPT_fasm, options::OPT_fno_asm)) {
3643 if (ShouldDisableDwarfDirectory(Args, getToolChain()))
3646 if (ShouldDisableAutolink(Args, getToolChain()))
3650 addDebugCompDirArg(Args, CmdArgs);
3652 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_depth_,
3658 if (Arg *A = Args.getLastArg(options::OPT_foperator_arrow_depth_EQ)) {
3663 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_depth_EQ)) {
3668 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_steps_EQ)) {
3673 if (Arg *A = Args.getLastArg(options::OPT_fbracket_depth_EQ)) {
3678 if (Arg *A = Args.getLastArg(options::OPT_Wlarge_by_value_copy_EQ,
3682 CmdArgs.push_back(Args.MakeArgString("-Wlarge-by-value-copy=" + bytes));
3688 if (Args.hasArg(options::OPT_relocatable_pch))
3691 if (Arg *A = Args.getLastArg(options::OPT_fconstant_string_class_EQ)) {
3696 if (Arg *A = Args.getLastArg(options::OPT_ftabstop_EQ)) {
3702 if (Arg *A = Args.getLastArg(options::OPT_ferror_limit_EQ))
3707 if (Arg *A = Args.getLastArg(options::OPT_fmacro_backtrace_limit_EQ)) {
3712 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_backtrace_limit_EQ)) {
3717 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_backtrace_limit_EQ)) {
3722 if (Arg *A = Args.getLastArg(options::OPT_fspell_checking_limit_EQ)) {
3729 if (Arg *A = Args.getLastArg(options::OPT_fmessage_length_EQ)) {
3735 CmdArgs.push_back(Args.MakeArgString(Twine(N)));
3739 if (const Arg *A = Args.getLastArg(options::OPT_fvisibility_EQ,
3753 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_inlines_hidden);
3755 Args.AddLastArg(CmdArgs, options::OPT_ftlsmodel_EQ);
3758 if (Args.hasFlag(options::OPT_ffreestanding, options::OPT_fhosted, false) ||
3763 Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls);
3764 Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions);
3765 Args.AddLastArg(CmdArgs, options::OPT_fstandalone_debug);
3766 Args.AddLastArg(CmdArgs, options::OPT_fno_standalone_debug);
3767 Args.AddLastArg(CmdArgs, options::OPT_fno_operator_names);
3771 Args.AddLastArg(CmdArgs, options::OPT_faltivec);
3772 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_show_template_tree);
3773 Args.AddLastArg(CmdArgs, options::OPT_fno_elide_type);
3776 Sanitize.addArgs(Args, CmdArgs);
3779 if (const Arg *A = Args.getLastArg(options::OPT_faltivec))
3784 << A->getAsString(Args) << "ppc/ppc64/ppc64le";
3787 Args.AddLastArg(CmdArgs, options::OPT_pg);
3790 if (!Args.hasFlag(options::OPT_flax_vector_conversions,
3794 if (Args.getLastArg(options::OPT_fapple_kext))
3797 Args.AddLastArg(CmdArgs, options::OPT_fobjc_sender_dependent_dispatch);
3798 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info);
3799 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_parseable_fixits);
3800 Args.AddLastArg(CmdArgs, options::OPT_ftime_report);
3801 Args.AddLastArg(CmdArgs, options::OPT_ftrapv);
3803 if (Arg *A = Args.getLastArg(options::OPT_ftrapv_handler_EQ)) {
3808 Args.AddLastArg(CmdArgs, options::OPT_ftrap_function_EQ);
3812 if (Arg *A = Args.getLastArg(options::OPT_fwrapv,
3816 } else if (Arg *A = Args.getLastArg(options::OPT_fstrict_overflow,
3822 if (Arg *A = Args.getLastArg(options::OPT_freroll_loops,
3827 Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings);
3828 Args.AddLastArg(CmdArgs, options::OPT_funroll_loops,
3831 Args.AddLastArg(CmdArgs, options::OPT_pthread);
3836 if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector,
3853 CmdArgs.push_back(Args.MakeArgString(Twine(StackProtectorLevel)));
3857 for (arg_iterator it = Args.filtered_begin(options::OPT__param),
3858 ie = Args.filtered_end(); it != ie; ++it) {
3864 CmdArgs.push_back(Args.MakeArgString(Str.drop_front(16)));
3871 if (Args.hasFlag(options::OPT_mstackrealign, options::OPT_mno_stackrealign,
3876 if (!Args.hasFlag(options::OPT_mno_stackrealign, options::OPT_mstackrealign,
3878 CmdArgs.push_back(Args.MakeArgString("-mstackrealign"));
3881 if (Args.hasArg(options::OPT_mstack_alignment)) {
3882 StringRef alignment = Args.getLastArgValue(options::OPT_mstack_alignment);
3883 CmdArgs.push_back(Args.MakeArgString("-mstack-alignment=" + alignment));
3886 if (Args.hasArg(options::OPT_mstack_probe_size)) {
3887 StringRef Size = Args.getLastArgValue(options::OPT_mstack_probe_size);
3890 CmdArgs.push_back(Args.MakeArgString("-mstack-probe-size=" + Size));
3899 if (Arg *A = Args.getLastArg(options::OPT_mrestrict_it,
3917 if (Arg *A = Args.getLastArg(options::OPT_mlong_calls,
3928 if (Arg *A = Args.getLastArg(options::OPT_fprofile_sample_use_EQ)) {
3933 A->render(Args, CmdArgs);
3936 if (Args.hasArg(options::OPT_mkernel)) {
3937 if (!Args.hasArg(options::OPT_fapple_kext) && types::isCXX(InputType))
3939 if (!Args.hasArg(options::OPT_fbuiltin))
3941 Args.ClaimAllArgs(options::OPT_fno_builtin);
3944 else if (!Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin))
3947 if (!Args.hasFlag(options::OPT_fassume_sane_operator_new,
3952 if (Args.hasFlag(options::OPT_fblocks, options::OPT_fno_blocks,
3954 (Args.hasArg(options::OPT_fgnu_runtime) &&
3955 Args.hasArg(options::OPT_fobjc_nonfragile_abi) &&
3956 !Args.hasArg(options::OPT_fno_blocks))) {
3959 if (!Args.hasArg(options::OPT_fgnu_runtime) &&
3968 if (Args.hasFlag(options::OPT_fmodules, options::OPT_fno_modules, false)) {
3969 bool AllowedInCXX = Args.hasFlag(options::OPT_fcxx_modules,
3980 if (Args.hasFlag(options::OPT_fmodule_maps, options::OPT_fno_module_maps,
3987 if (Args.hasFlag(options::OPT_fmodules_decluse,
3995 if (Args.hasFlag(options::OPT_fmodules_strict_decluse,
4002 if (!Args.hasFlag(options::OPT_fimplicit_modules,
4009 Args.AddLastArg(CmdArgs, options::OPT_fmodule_name);
4013 Args.AddAllArgs(CmdArgs, options::OPT_fmodule_map_file);
4016 Args.AddAllArgs(CmdArgs, options::OPT_fmodule_file);
4021 if (Arg *A = Args.getLastArg(options::OPT_fmodules_cache_path))
4040 CmdArgs.push_back(Args.MakeArgString(ModuleCachePath));
4049 C.addTempFile(Args.MakeArgString(VFSDir));
4053 CmdArgs.push_back(Args.MakeArgString(VFSDir));
4057 Args.AddLastArg(CmdArgs, options::OPT_fmodules_user_build_path);
4060 Args.AddAllArgs(CmdArgs, options::OPT_fmodules_ignore_macro);
4061 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_interval);
4062 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_after);
4064 Args.AddLastArg(CmdArgs, options::OPT_fbuild_session_timestamp);
4066 if (Arg *A = Args.getLastArg(options::OPT_fbuild_session_file)) {
4067 if (Args.hasArg(options::OPT_fbuild_session_timestamp))
4069 << A->getAsString(Args) << "-fbuild-session-timestamp";
4074 CmdArgs.push_back(Args.MakeArgString(
4079 if (Args.getLastArg(options::OPT_fmodules_validate_once_per_build_session)) {
4080 if (!Args.getLastArg(options::OPT_fbuild_session_timestamp,
4084 Args.AddLastArg(CmdArgs,
4088 Args.AddLastArg(CmdArgs, options::OPT_fmodules_validate_system_headers);
4091 if (Args.hasFlag(options::OPT_fno_access_control,
4097 if (Args.hasFlag(options::OPT_fno_elide_constructors,
4110 if (Args.hasFlag(options::OPT_fshort_enums,
4117 if (!Args.hasFlag(options::OPT_fsigned_char, options::OPT_funsigned_char,
4122 if (!Args.hasFlag(options::OPT_fuse_cxa_atexit,
4131 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions,
4136 if (Args.hasFlag(options::OPT_fuse_line_directives,
4141 if (Args.hasFlag(options::OPT_fms_compatibility,
4143 (IsWindowsMSVC && Args.hasFlag(options::OPT_fms_extensions,
4150 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions,
4152 Args.hasArg(options::OPT_fmsc_version) ||
4153 Args.hasArg(options::OPT_fms_compatibility_version)) {
4154 const Arg *MSCVersion = Args.getLastArg(options::OPT_fmsc_version);
4156 Args.getLastArg(options::OPT_fms_compatibility_version);
4160 << MSCVersion->getAsString(Args)
4161 << MSCompatibilityVersion->getAsString(Args);
4166 << MSCompatibilityVersion->getAsString(Args)
4171 D.Diag(diag::err_drv_invalid_value) << MSCVersion->getAsString(Args)
4179 Args.MakeArgString("-fms-compatibility-version=" + MSVT.getAsString()));
4183 if (Args.hasFlag(options::OPT_fborland_extensions,
4189 if (!Args.hasFlag(options::OPT_fthreadsafe_statics,
4196 if (Args.hasFlag(options::OPT_fdelayed_template_parsing,
4202 if (Arg *A = Args.getLastArg(options::OPT_fgnu_keywords,
4204 A->render(Args, CmdArgs);
4206 if (Args.hasFlag(options::OPT_fgnu89_inline,
4211 if (Args.hasArg(options::OPT_fno_inline))
4214 if (Args.hasArg(options::OPT_fno_inline_functions))
4217 ObjCRuntime objcRuntime = AddObjCRuntimeArgs(Args, CmdArgs, rewriteKind);
4224 if (!Args.hasFlag(options::OPT_fobjc_legacy_dispatch,
4252 bool ARC = isObjCAutoRefCount(Args);
4262 if (getToolChain().GetCXXStdlibType(Args) == ToolChain::CST_Libcxx)
4270 if (Args.hasFlag(options::OPT_fobjc_arc_exceptions,
4283 const Arg *GCArg = Args.getLastArg(options::OPT_fobjc_gc_only);
4285 GCArg = Args.getLastArg(options::OPT_fobjc_gc);
4289 << GCArg->getAsString(Args);
4291 GCArg->render(Args, CmdArgs);
4295 << GCArg->getAsString(Args);
4299 if (Args.hasFlag(options::OPT_fapplication_extension,
4303 // Handle GCC-style exception args.
4305 addExceptionArgs(Args, InputType, getToolChain(), KernelOrKext,
4312 if (!Args.hasFlag(options::OPT_fassume_sane_operator_new,
4318 if (Args.hasFlag(options::OPT_fsized_deallocation,
4324 if (!Args.hasFlag(options::OPT_fconstant_cfstrings,
4326 !Args.hasFlag(options::OPT_mconstant_cfstrings,
4332 if (Arg *A = Args.getLastArg(options::OPT_fshort_wchar,
4334 A->render(Args, CmdArgs);
4337 if (Args.hasFlag(options::OPT_fpascal_strings,
4344 if (Arg *A = Args.getLastArg(options::OPT_fpack_struct_EQ)) {
4347 CmdArgs.push_back(Args.MakeArgString(PackStructStr));
4348 } else if (Args.hasFlag(options::OPT_fpack_struct,
4354 bool SkipMaxTypeAlign = Args.hasArg(options::OPT_fno_max_type_align);
4355 if (Arg *A = Args.getLastArg(options::OPT_fmax_type_align_EQ)) {
4359 CmdArgs.push_back(Args.MakeArgString(MaxTypeAlignStr));
4364 CmdArgs.push_back(Args.MakeArgString(MaxTypeAlignStr));
4369 if (!Args.hasArg(options::OPT_fcommon))
4371 Args.ClaimAllArgs(options::OPT_fno_common);
4375 else if (!Args.hasFlag(options::OPT_fcommon, options::OPT_fno_common))
4380 if (!Args.hasFlag(options::OPT_fsigned_bitfields,
4383 << Args.getLastArg(options::OPT_funsigned_bitfields)->getAsString(Args);
4386 if (!Args.hasFlag(options::OPT_ffor_scope,
4389 << Args.getLastArg(options::OPT_fno_for_scope)->getAsString(Args);
4392 if (Arg *inputCharset = Args.getLastArg(
4396 D.Diag(diag::err_drv_invalid_value) << inputCharset->getAsString(Args) << value;
4400 if (Arg *execCharset = Args.getLastArg(
4404 D.Diag(diag::err_drv_invalid_value) << execCharset->getAsString(Args) << value;
4408 if (!Args.hasFlag(options::OPT_fcaret_diagnostics,
4413 if (!Args.hasFlag(options::OPT_fdiagnostics_fixit_info,
4418 if (Args.hasFlag(options::OPT_fdiagnostics_show_option,
4423 Args.getLastArg(options::OPT_fdiagnostics_show_category_EQ)) {
4429 Args.getLastArg(options::OPT_fdiagnostics_format_EQ)) {
4434 if (Arg *A = Args.getLastArg(
4449 for (const auto &Arg : Args) {
4483 if (Args.hasArg(options::OPT_fansi_escape_codes))
4486 if (!Args.hasFlag(options::OPT_fshow_source_location,
4490 if (!Args.hasFlag(options::OPT_fshow_column,
4495 if (!Args.hasFlag(options::OPT_fspell_checking,
4501 if (Args.hasFlag(options::OPT_fasm_blocks, options::OPT_fno_asm_blocks,
4506 if (!Args.hasFlag(options::OPT_fgnu_inline_asm,
4513 bool EnableVec = shouldEnableVectorizerAtOLevel(Args, false);
4516 if (Args.hasFlag(options::OPT_fvectorize, VectorizeAliasOption,
4521 bool EnableSLPVec = shouldEnableVectorizerAtOLevel(Args, true);
4524 if (Args.hasFlag(options::OPT_fslp_vectorize, SLPVectAliasOption,
4529 if (Args.hasFlag(options::OPT_fslp_vectorize_aggressive,
4533 if (Arg *A = Args.getLastArg(options::OPT_fshow_overloads_EQ))
4534 A->render(Args, CmdArgs);
4538 if (Arg *A = Args.getLastArg(options::OPT_fdollars_in_identifiers,
4548 if (Arg *A = Args.getLastArg(options::OPT_funit_at_a_time,
4551 D.Diag(diag::warn_drv_clang_unsupported) << A->getAsString(Args);
4554 if (Args.hasFlag(options::OPT_fapple_pragma_pack,
4572 if (!Args.hasArg(options::OPT_fbuiltin_strcat))
4574 if (!Args.hasArg(options::OPT_fbuiltin_strcpy))
4583 if (Args.hasFlag(options::OPT_frewrite_includes,
4589 if (Arg *A = Args.getLastArg(options::OPT_traditional,
4594 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args);
4597 Args.AddLastArg(CmdArgs, options::OPT_dM);
4598 Args.AddLastArg(CmdArgs, options::OPT_dD);
4601 if (Arg *A = Args.getLastArg(options::OPT__serialize_diags)) {
4603 CmdArgs.push_back(Args.MakeArgString(A->getValue()));
4606 if (Args.hasArg(options::OPT_fretain_comments_from_system_headers))
4610 Args.AddAllArgs(CmdArgs, options::OPT_fcomment_block_commands);
4612 Args.AddAllArgs(CmdArgs, options::OPT_fparse_all_comments);
4616 Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
4618 for (arg_iterator it = Args.filtered_begin(options::OPT_mllvm),
4619 ie = Args.filtered_end(); it != ie; ++it) {
4628 (*it)->render(Args, CmdArgs);
4648 addDashXForInput(Args, II, CmdArgs);
4653 II.getInputArg().renderAsInput(Args, CmdArgs);
4656 Args.AddAllArgs(CmdArgs, options::OPT_undef);
4664 for (const auto &Arg : Args)
4665 Arg->render(Args, OriginalArgs);
4676 CmdArgs.push_back(Args.MakeArgString(Flags));
4681 bool SplitDwarf = Args.hasArg(options::OPT_gsplit_dwarf) &&
4688 SplitDwarfOut = SplitDebugName(Args, Inputs);
4693 if (Args.hasArg(options::OPT__SLASH_fallback) &&
4697 getCLFallback()->GetCommand(C, JA, Output, Inputs, Args, LinkingOutput);
4709 SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output, SplitDwarfOut);
4711 if (Arg *A = Args.getLastArg(options::OPT_pg))
4712 if (Args.hasArg(options::OPT_fomit_frame_pointer))
4714 << "-fomit-frame-pointer" << A->getAsString(Args);
4721 Args.ClaimAllArgs(options::OPT_fpch_preprocess);
4725 Args.ClaimAllArgs(options::OPT_clang_ignored_f_Group);
4726 Args.ClaimAllArgs(options::OPT_clang_ignored_m_Group);
4729 Args.ClaimAllArgs(options::OPT_emit_llvm);
4735 ObjCRuntime Clang::AddObjCRuntimeArgs(const ArgList &args,
4739 Arg *runtimeArg = args.getLastArg(options::OPT_fnext_runtime,
4754 runtimeArg->render(args, cmdArgs);
4765 if (Arg *abiArg = args.getLastArg(options::OPT_fobjc_abi_version_EQ)) {
4782 if (args.hasFlag(options::OPT_fobjc_nonfragile_abi,
4792 if (Arg *abiArg = args.getLastArg(
4852 cmdArgs.push_back(args.MakeArgString(
4878 static EHFlags parseClangCLEHFlags(const Driver &D, const ArgList &Args) {
4880 std::vector<std::string> EHArgs = Args.getAllArgValues(options::OPT__SLASH_EH);
4896 void Clang::AddClangCLArgs(const ArgList &Args, ArgStringList &CmdArgs) const {
4899 if (Args.hasArg(options::OPT__SLASH_LDd))
4904 if (Arg *A = Args.getLastArg(options::OPT__SLASH_M_Group))
4909 if (Args.hasArg(options::OPT__SLASH_LDd))
4922 if (Args.hasArg(options::OPT__SLASH_LDd))
4943 if (!Args.hasArg(options::OPT_E) && !Args.hasArg(options::OPT__SLASH_EP))
4944 if (Arg *A = Args.getLastArg(options::OPT_show_includes))
4945 A->render(Args, CmdArgs);
4948 if (Args.hasFlag(options::OPT__SLASH_GR_, options::OPT__SLASH_GR,
4953 EHFlags EH = parseClangCLEHFlags(D, Args);
4961 if (Args.hasArg(options::OPT__SLASH_EP)) {
4973 if (Arg *A = Args.getLastArg(options::OPT__SLASH_volatile_Group))
4979 Arg *MostGeneralArg = Args.getLastArg(options::OPT__SLASH_vmg);
4980 Arg *BestCaseArg = Args.getLastArg(options::OPT__SLASH_vmb);
4983 << MostGeneralArg->getAsString(Args) << BestCaseArg->getAsString(Args);
4986 Arg *SingleArg = Args.getLastArg(options::OPT__SLASH_vms);
4987 Arg *MultipleArg = Args.getLastArg(options::OPT__SLASH_vmm);
4988 Arg *VirtualArg = Args.getLastArg(options::OPT__SLASH_vmv);
4994 << FirstConflict->getAsString(Args)
4995 << SecondConflict->getAsString(Args);
5005 if (Arg *A = Args.getLastArg(options::OPT_vtordisp_mode_EQ))
5006 A->render(Args, CmdArgs);
5008 if (!Args.hasArg(options::OPT_fdiagnostics_format_EQ)) {
5010 if (Args.hasArg(options::OPT__SLASH_fallback))
5023 void ClangAs::AddMIPSTargetArgs(const ArgList &Args,
5028 mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName);
5037 const ArgList &Args,
5045 Args.ClaimAllArgs(options::OPT_w);
5047 Args.ClaimAllArgs(options::OPT_emit_llvm);
5049 claimNoWarnArgs(Args);
5059 getToolChain().ComputeEffectiveClangTriple(Args, Input.getType());
5060 CmdArgs.push_back(Args.MakeArgString(TripleStr));
5070 CmdArgs.push_back(Clang::getBaseInputName(Args, Inputs));
5074 std::string CPU = getCPUName(Args, Triple);
5077 CmdArgs.push_back(Args.MakeArgString(CPU));
5082 getTargetFeatures(D, Triple, Args, CmdArgs, true);
5085 (void) Args.hasArg(options::OPT_force__cpusubtype__ALL);
5098 Args.ClaimAllArgs(options::OPT_g_Group);
5099 if (Arg *A = Args.getLastArg(options::OPT_g_Group))
5103 if (Args.hasArg(options::OPT_gdwarf_2))
5105 if (Args.hasArg(options::OPT_gdwarf_3))
5107 if (Args.hasArg(options::OPT_gdwarf_4))
5111 addDebugCompDirArg(Args, CmdArgs);
5116 CmdArgs.push_back(Args.MakeArgString(getClangFullVersion()));
5123 for (const auto &Arg : Args)
5124 Arg->render(Args, OriginalArgs);
5136 CmdArgs.push_back(Args.MakeArgString(Flags));
5150 AddMIPSTargetArgs(Args, CmdArgs);
5159 for (arg_iterator it = Args.filtered_begin(options::OPT_W_Group),
5160 ie = Args.filtered_end();
5164 CollectArgsForIntegratedAssembler(C, Args, CmdArgs,
5167 Args.AddAllArgs(CmdArgs, options::OPT_mllvm);
5182 if (Args.hasArg(options::OPT_gsplit_dwarf) &&
5184 SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output,
5185 SplitDebugName(Args, Inputs));
5193 const ArgList &Args,
5198 for (const auto &A : Args) {
5215 A->render(Args, CmdArgs);
5225 Args.MakeArgString(getToolChain().getDefaultUniversalArchName()));
5248 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
5289 A.render(Args, CmdArgs);
5303 Args.MakeArgString(getToolChain().GetProgramPath(GCCName));
5348 const ArgList &Args,
5350 claimNoWarnArgs(Args);
5356 MarchString += toolchains::Hexagon_TC::GetTargetCPU(Args);
5357 CmdArgs.push_back(Args.MakeArgString(MarchString));
5369 std::string SmallDataThreshold = GetHexagonSmallDataThresholdValue(Args);
5372 Args.MakeArgString(std::string("-G") + SmallDataThreshold));
5374 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
5402 II.getInputArg().render(Args, CmdArgs);
5406 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(GCCName));
5418 const ArgList &Args,
5430 bool hasStaticArg = Args.hasArg(options::OPT_static);
5431 bool buildingLib = Args.hasArg(options::OPT_shared);
5432 bool buildPIE = Args.hasArg(options::OPT_pie);
5433 bool incStdLib = !Args.hasArg(options::OPT_nostdlib);
5434 bool incStartFiles = !Args.hasArg(options::OPT_nostartfiles);
5435 bool incDefLibs = !Args.hasArg(options::OPT_nodefaultlibs);
5442 Args.ClaimAllArgs(options::OPT_g_Group);
5443 Args.ClaimAllArgs(options::OPT_emit_llvm);
5444 Args.ClaimAllArgs(options::OPT_w); // Other warning options are already
5446 Args.ClaimAllArgs(options::OPT_static_libgcc);
5454 std::string MarchString = toolchains::Hexagon_TC::GetTargetCPU(Args);
5455 CmdArgs.push_back(Args.MakeArgString("-m" + MarchString));
5469 std::string SmallDataThreshold = GetHexagonSmallDataThresholdValue(Args);
5472 Args.MakeArgString(std::string("-G") + SmallDataThreshold));
5485 toolchains::Hexagon_TC::GetGnuDir(D.InstalledDir, Args) + "/";
5497 for (arg_iterator it = Args.filtered_begin(options::OPT_moslib_EQ),
5498 ie = Args.filtered_end(); it != ie; ++it) {
5516 Args.MakeArgString(StartFilesDir + "/crt0_standalone.o"));
5518 CmdArgs.push_back(Args.MakeArgString(StartFilesDir + "/crt0.o"));
5521 CmdArgs.push_back(Args.MakeArgString(StartFilesDir + initObj));
5529 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath));
5534 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
5535 Args.AddAllArgs(CmdArgs, options::OPT_e);
5536 Args.AddAllArgs(CmdArgs, options::OPT_s);
5537 Args.AddAllArgs(CmdArgs, options::OPT_t);
5538 Args.AddAllArgs(CmdArgs, options::OPT_u_Group);
5540 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
5547 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
5556 CmdArgs.push_back(Args.MakeArgString("-l" + *i));
5569 CmdArgs.push_back(Args.MakeArgString(StartFilesDir + finiObj));
5573 C.addCommand(llvm::make_unique<Command>(JA, *this, Args.MakeArgString(Linker),
5579 const char *arm::getARMCPUForMArch(const ArgList &Args,
5582 if (Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
5604 StringRef arm::getARMTargetCPU(const ArgList &Args,
5608 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
5617 return getARMCPUForMArch(Args, Triple);
5652 void arm::appendEBLinkFlags(const ArgList &Args, ArgStringList &CmdArgs, const llvm::Triple &Triple) {
5653 if (Args.hasArg(options::OPT_r))
5656 StringRef Suffix = getLLVMArchSuffixForARM(getARMCPUForMArch(Args, Triple));
5686 bool mips::hasMipsAbiArg(const ArgList &Args, const char *Value) {
5687 Arg *A = Args.getLastArg(options::OPT_mabi_EQ);
5691 bool mips::isUCLibc(const ArgList &Args) {
5692 Arg *A = Args.getLastArg(options::OPT_m_libc_Group);
5696 bool mips::isNaN2008(const ArgList &Args, const llvm::Triple &Triple) {
5697 if (Arg *NaNArg = Args.getLastArg(options::OPT_mnan_EQ))
5704 return llvm::StringSwitch<bool>(getCPUName(Args, Triple))
5774 const char *Clang::getBaseInputName(const ArgList &Args,
5776 return Args.MakeArgString(
5780 const char *Clang::getBaseInputStem(const ArgList &Args,
5782 const char *Str = getBaseInputName(Args, Inputs);
5785 return Args.MakeArgString(std::string(Str, End));
5790 const char *Clang::getDependencyFileName(const ArgList &Args,
5795 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) {
5799 Res = getBaseInputStem(Args, Inputs);
5801 return Args.MakeArgString(Res + ".d");
5807 const ArgList &Args,
5814 Args.ClaimAllArgs(options::OPT_g_Group);
5816 Args.ClaimAllArgs(options::OPT_emit_llvm);
5819 Args.ClaimAllArgs(options::OPT_w);
5822 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
5836 if (!Args.hasArg(options::OPT_nostdlib) &&
5837 !Args.hasArg(options::OPT_nostartfiles)) {
5838 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt0.o")));
5839 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtbegin.o")));
5842 Args.AddAllArgs(CmdArgs, options::OPT_L);
5845 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
5846 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
5847 Args.AddAllArgs(CmdArgs, options::OPT_e);
5848 Args.AddAllArgs(CmdArgs, options::OPT_s);
5849 Args.AddAllArgs(CmdArgs, options::OPT_t);
5850 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
5851 Args.AddAllArgs(CmdArgs, options::OPT_r);
5853 if (D.IsUsingLTO(ToolChain, Args))
5854 AddGoldPlugin(ToolChain, Args, CmdArgs);
5856 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
5858 if (!Args.hasArg(options::OPT_nostdlib) &&
5859 !Args.hasArg(options::OPT_nodefaultlibs)) {
5861 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
5866 if (!Args.hasArg(options::OPT_nostdlib) &&
5867 !Args.hasArg(options::OPT_nostartfiles))
5868 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtend.o")));
5870 const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath());
5877 const ArgList &Args,
5896 if (Args.hasArg(options::OPT_fno_integrated_as)) {
5905 if (Args.hasArg(options::OPT_gstabs))
5907 else if (Args.hasArg(options::OPT_g_Group))
5912 AddMachOArch(Args, CmdArgs);
5917 Args.hasArg(options::OPT_force__cpusubtype__ALL))
5921 (((Args.hasArg(options::OPT_mkernel) ||
5922 Args.hasArg(options::OPT_fapple_kext)) &&
5924 Args.hasArg(options::OPT_static)))
5927 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
5940 Args.MakeArgString(getToolChain().GetProgramPath("as"));
5946 void darwin::MachOTool::AddMachOArch(const ArgList &Args,
5948 StringRef ArchName = getMachOToolChain().getMachOArchName(Args);
5952 CmdArgs.push_back(Args.MakeArgString(ArchName));
5971 const ArgList &Args,
5978 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
5984 << A->getAsString(Args);
5989 if (Version[0] >= 100 && !Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
5992 if (Args.hasArg(options::OPT_rdynamic) && Version[0] >= 137)
5997 if (Args.hasFlag(options::OPT_fapplication_extension,
6004 if (Version[0] >= 116 && D.IsUsingLTO(getToolChain(), Args) &&
6014 Args.AddAllArgs(CmdArgs, options::OPT_static);
6015 if (!Args.hasArg(options::OPT_static))
6017 if (Args.hasArg(options::OPT_fgnu_runtime)) {
6018 // FIXME: gcc replaces -lobjc in forward args with -lobjc-gnu
6022 if (!Args.hasArg(options::OPT_dynamiclib)) {
6023 AddMachOArch(Args, CmdArgs);
6025 Args.AddLastArg(CmdArgs, options::OPT_force__cpusubtype__ALL);
6027 Args.AddLastArg(CmdArgs, options::OPT_bundle);
6028 Args.AddAllArgs(CmdArgs, options::OPT_bundle__loader);
6029 Args.AddAllArgs(CmdArgs, options::OPT_client__name);
6032 if ((A = Args.getLastArg(options::OPT_compatibility__version)) ||
6033 (A = Args.getLastArg(options::OPT_current__version)) ||
6034 (A = Args.getLastArg(options::OPT_install__name)))
6036 << A->getAsString(Args) << "-dynamiclib";
6038 Args.AddLastArg(CmdArgs, options::OPT_force__flat__namespace);
6039 Args.AddLastArg(CmdArgs, options::OPT_keep__private__externs);
6040 Args.AddLastArg(CmdArgs, options::OPT_private__bundle);
6045 if ((A = Args.getLastArg(options::OPT_bundle)) ||
6046 (A = Args.getLastArg(options::OPT_bundle__loader)) ||
6047 (A = Args.getLastArg(options::OPT_client__name)) ||
6048 (A = Args.getLastArg(options::OPT_force__flat__namespace)) ||
6049 (A = Args.getLastArg(options::OPT_keep__private__externs)) ||
6050 (A = Args.getLastArg(options::OPT_private__bundle)))
6052 << A->getAsString(Args) << "-dynamiclib";
6054 Args.AddAllArgsTranslated(CmdArgs, options::OPT_compatibility__version,
6056 Args.AddAllArgsTranslated(CmdArgs, options::OPT_current__version,
6059 AddMachOArch(Args, CmdArgs);
6061 Args.AddAllArgsTranslated(CmdArgs, options::OPT_install__name,
6065 Args.AddLastArg(CmdArgs, options::OPT_all__load);
6066 Args.AddAllArgs(CmdArgs, options::OPT_allowable__client);
6067 Args.AddLastArg(CmdArgs, options::OPT_bind__at__load);
6069 Args.AddLastArg(CmdArgs, options::OPT_arch__errors__fatal);
6070 Args.AddLastArg(CmdArgs, options::OPT_dead__strip);
6071 Args.AddLastArg(CmdArgs, options::OPT_no__dead__strip__inits__and__terms);
6072 Args.AddAllArgs(CmdArgs, options::OPT_dylib__file);
6073 Args.AddLastArg(CmdArgs, options::OPT_dynamic);
6074 Args.AddAllArgs(CmdArgs, options::OPT_exported__symbols__list);
6075 Args.AddLastArg(CmdArgs, options::OPT_flat__namespace);
6076 Args.AddAllArgs(CmdArgs, options::OPT_force__load);
6077 Args.AddAllArgs(CmdArgs, options::OPT_headerpad__max__install__names);
6078 Args.AddAllArgs(CmdArgs, options::OPT_image__base);
6079 Args.AddAllArgs(CmdArgs, options::OPT_init);
6082 MachOTC.addMinVersionArgs(Args, CmdArgs);
6084 Args.AddLastArg(CmdArgs, options::OPT_nomultidefs);
6085 Args.AddLastArg(CmdArgs, options::OPT_multi__module);
6086 Args.AddLastArg(CmdArgs, options::OPT_single__module);
6087 Args.AddAllArgs(CmdArgs, options::OPT_multiply__defined);
6088 Args.AddAllArgs(CmdArgs, options::OPT_multiply__defined__unused);
6090 if (const Arg *A = Args.getLastArg(options::OPT_fpie, options::OPT_fPIE,
6100 Args.AddLastArg(CmdArgs, options::OPT_prebind);
6101 Args.AddLastArg(CmdArgs, options::OPT_noprebind);
6102 Args.AddLastArg(CmdArgs, options::OPT_nofixprebinding);
6103 Args.AddLastArg(CmdArgs, options::OPT_prebind__all__twolevel__modules);
6104 Args.AddLastArg(CmdArgs, options::OPT_read__only__relocs);
6105 Args.AddAllArgs(CmdArgs, options::OPT_sectcreate);
6106 Args.AddAllArgs(CmdArgs, options::OPT_sectorder);
6107 Args.AddAllArgs(CmdArgs, options::OPT_seg1addr);
6108 Args.AddAllArgs(CmdArgs, options::OPT_segprot);
6109 Args.AddAllArgs(CmdArgs, options::OPT_segaddr);
6110 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__only__addr);
6111 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__write__addr);
6112 Args.AddAllArgs(CmdArgs, options::OPT_seg__addr__table);
6113 Args.AddAllArgs(CmdArgs, options::OPT_seg__addr__table__filename);
6114 Args.AddAllArgs(CmdArgs, options::OPT_sub__library);
6115 Args.AddAllArgs(CmdArgs, options::OPT_sub__umbrella);
6123 } else if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) {
6128 Args.AddLastArg(CmdArgs, options::OPT_twolevel__namespace);
6129 Args.AddLastArg(CmdArgs, options::OPT_twolevel__namespace__hints);
6130 Args.AddAllArgs(CmdArgs, options::OPT_umbrella);
6131 Args.AddAllArgs(CmdArgs, options::OPT_undefined);
6132 Args.AddAllArgs(CmdArgs, options::OPT_unexported__symbols__list);
6133 Args.AddAllArgs(CmdArgs, options::OPT_weak__reference__mismatches);
6134 Args.AddLastArg(CmdArgs, options::OPT_X_Flag);
6135 Args.AddAllArgs(CmdArgs, options::OPT_y);
6136 Args.AddLastArg(CmdArgs, options::OPT_w);
6137 Args.AddAllArgs(CmdArgs, options::OPT_pagezero__size);
6138 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__);
6139 Args.AddLastArg(CmdArgs, options::OPT_seglinkedit);
6140 Args.AddLastArg(CmdArgs, options::OPT_noseglinkedit);
6141 Args.AddAllArgs(CmdArgs, options::OPT_sectalign);
6142 Args.AddAllArgs(CmdArgs, options::OPT_sectobjectsymbols);
6143 Args.AddAllArgs(CmdArgs, options::OPT_segcreate);
6144 Args.AddLastArg(CmdArgs, options::OPT_whyload);
6145 Args.AddLastArg(CmdArgs, options::OPT_whatsloaded);
6146 Args.AddAllArgs(CmdArgs, options::OPT_dylinker__install__name);
6147 Args.AddLastArg(CmdArgs, options::OPT_dylinker);
6148 Args.AddLastArg(CmdArgs, options::OPT_Mach);
6160 const ArgList &Args,
6176 if (Args.hasArg(options::OPT_ccc_arcmt_check,
6178 for (const auto &Arg : Args)
6181 Args.MakeArgString(getToolChain().GetProgramPath("touch"));
6189 AddLinkArgs(C, Args, CmdArgs, Inputs);
6191 Args.AddAllArgs(CmdArgs, options::OPT_d_Flag);
6192 Args.AddAllArgs(CmdArgs, options::OPT_s);
6193 Args.AddAllArgs(CmdArgs, options::OPT_t);
6194 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
6195 Args.AddAllArgs(CmdArgs, options::OPT_u_Group);
6196 Args.AddLastArg(CmdArgs, options::OPT_e);
6197 Args.AddAllArgs(CmdArgs, options::OPT_r);
6202 if (Args.hasArg(options::OPT_ObjC) || Args.hasArg(options::OPT_ObjCXX))
6208 if (!Args.hasArg(options::OPT_nostdlib) &&
6209 !Args.hasArg(options::OPT_nostartfiles))
6210 getMachOToolChain().addStartObjectFileArgs(Args, CmdArgs);
6212 Args.AddAllArgs(CmdArgs, options::OPT_L);
6215 if (Args.hasArg(options::OPT_fopenmp)) {
6217 } else if (const Arg *A = Args.getLastArg(options::OPT_fopenmp_EQ)) {
6237 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
6255 if (isObjCRuntimeLinked(Args) &&
6256 !Args.hasArg(options::OPT_nostdlib) &&
6257 !Args.hasArg(options::OPT_nodefaultlibs)) {
6259 getMachOToolChain().AddLinkARCArgs(Args, CmdArgs);
6273 if (Args.hasArg(options::OPT_fnested_functions))
6276 if (!Args.hasArg(options::OPT_nostdlib) &&
6277 !Args.hasArg(options::OPT_nodefaultlibs)) {
6279 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
6284 getMachOToolChain().AddLinkRuntimeLibArgs(Args, CmdArgs);
6287 if (!Args.hasArg(options::OPT_nostdlib) &&
6288 !Args.hasArg(options::OPT_nostartfiles)) {
6292 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
6293 Args.AddAllArgs(CmdArgs, options::OPT_F);
6296 for (auto it = Args.filtered_begin(options::OPT_iframework),
6297 ie = Args.filtered_end(); it != ie; ++it)
6298 CmdArgs.push_back(Args.MakeArgString(std::string("-F") +
6301 if (!Args.hasArg(options::OPT_nostdlib) &&
6302 !Args.hasArg(options::OPT_nodefaultlibs)) {
6303 if (Arg *A = Args.getLastArg(options::OPT_fveclib)) {
6312 Args.MakeArgString(getToolChain().GetLinkerPath());
6322 const ArgList &Args,
6337 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("lipo"));
6344 const ArgList &Args,
6357 Args.MakeArgString(getToolChain().GetProgramPath("dsymutil"));
6364 const ArgList &Args,
6380 Args.MakeArgString(getToolChain().GetProgramPath("dwarfdump"));
6387 const ArgList &Args,
6389 claimNoWarnArgs(Args);
6392 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
6401 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as"));
6408 const ArgList &Args,
6434 if ((!Args.hasArg(options::OPT_nostdlib)) &&
6435 (!Args.hasArg(options::OPT_shared))) {
6440 if (Args.hasArg(options::OPT_static)) {
6445 if (Args.hasArg(options::OPT_shared)) {
6449 CmdArgs.push_back(Args.MakeArgString(LibPath + "ld.so.1"));
6460 if (!Args.hasArg(options::OPT_nostdlib) &&
6461 !Args.hasArg(options::OPT_nostartfiles)) {
6462 if (!Args.hasArg(options::OPT_shared)) {
6463 CmdArgs.push_back(Args.MakeArgString(LibPath + "crt1.o"));
6464 CmdArgs.push_back(Args.MakeArgString(LibPath + "crti.o"));
6465 CmdArgs.push_back(Args.MakeArgString(LibPath + "values-Xa.o"));
6466 CmdArgs.push_back(Args.MakeArgString(GCCLibPath + "crtbegin.o"));
6468 CmdArgs.push_back(Args.MakeArgString(LibPath + "crti.o"));
6469 CmdArgs.push_back(Args.MakeArgString(LibPath + "values-Xa.o"));
6470 CmdArgs.push_back(Args.MakeArgString(GCCLibPath + "crtbegin.o"));
6473 CmdArgs.push_back(Args.MakeArgString(LibPath + "cxa_finalize.o"));
6476 CmdArgs.push_back(Args.MakeArgString("-L" + GCCLibPath));
6478 Args.AddAllArgs(CmdArgs, options::OPT_L);
6479 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
6480 Args.AddAllArgs(CmdArgs, options::OPT_e);
6481 Args.AddAllArgs(CmdArgs, options::OPT_r);
6483 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
6485 if (!Args.hasArg(options::OPT_nostdlib) &&
6486 !Args.hasArg(options::OPT_nodefaultlibs)) {
6488 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
6490 if (!Args.hasArg(options::OPT_shared)) {
6497 if (!Args.hasArg(options::OPT_nostdlib) &&
6498 !Args.hasArg(options::OPT_nostartfiles)) {
6499 CmdArgs.push_back(Args.MakeArgString(GCCLibPath + "crtend.o"));
6501 CmdArgs.push_back(Args.MakeArgString(LibPath + "crtn.o"));
6503 addProfileRT(getToolChain(), Args, CmdArgs);
6506 Args.MakeArgString(getToolChain().GetLinkerPath());
6513 const ArgList &Args,
6515 claimNoWarnArgs(Args);
6546 mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName);
6565 addAssemblerKPIC(Args, CmdArgs);
6567 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
6577 Args.MakeArgString(getToolChain().GetProgramPath("as"));
6584 const ArgList &Args,
6590 Args.ClaimAllArgs(options::OPT_g_Group);
6592 Args.ClaimAllArgs(options::OPT_emit_llvm);
6595 Args.ClaimAllArgs(options::OPT_w);
6602 if ((!Args.hasArg(options::OPT_nostdlib)) &&
6603 (!Args.hasArg(options::OPT_shared))) {
6608 if (Args.hasArg(options::OPT_static)) {
6611 if (Args.hasArg(options::OPT_rdynamic))
6615 if (Args.hasArg(options::OPT_shared)) {
6623 if (Args.hasArg(options::OPT_nopie))
6633 if (!Args.hasArg(options::OPT_nostdlib) &&
6634 !Args.hasArg(options::OPT_nostartfiles)) {
6635 if (!Args.hasArg(options::OPT_shared)) {
6636 if (Args.hasArg(options::OPT_pg))
6637 CmdArgs.push_back(Args.MakeArgString(
6640 CmdArgs.push_back(Args.MakeArgString(
6642 CmdArgs.push_back(Args.MakeArgString(
6645 CmdArgs.push_back(Args.MakeArgString(
6653 CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc-lib/" + Triple +
6656 Args.AddAllArgs(CmdArgs, options::OPT_L);
6657 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
6658 Args.AddAllArgs(CmdArgs, options::OPT_e);
6659 Args.AddAllArgs(CmdArgs, options::OPT_s);
6660 Args.AddAllArgs(CmdArgs, options::OPT_t);
6661 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
6662 Args.AddAllArgs(CmdArgs, options::OPT_r);
6664 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
6666 if (!Args.hasArg(options::OPT_nostdlib) &&
6667 !Args.hasArg(options::OPT_nodefaultlibs)) {
6669 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
6670 if (Args.hasArg(options::OPT_pg))
6680 if (Args.hasArg(options::OPT_pthread)) {
6681 if (!Args.hasArg(options::OPT_shared) &&
6682 Args.hasArg(options::OPT_pg))
6688 if (!Args.hasArg(options::OPT_shared)) {
6689 if (Args.hasArg(options::OPT_pg))
6698 if (!Args.hasArg(options::OPT_nostdlib) &&
6699 !Args.hasArg(options::OPT_nostartfiles)) {
6700 if (!Args.hasArg(options::OPT_shared))
6701 CmdArgs.push_back(Args.MakeArgString(
6704 CmdArgs.push_back(Args.MakeArgString(
6709 Args.MakeArgString(getToolChain().GetLinkerPath());
6716 const ArgList &Args,
6718 claimNoWarnArgs(Args);
6721 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
6730 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as"));
6737 const ArgList &Args,
6742 if ((!Args.hasArg(options::OPT_nostdlib)) &&
6743 (!Args.hasArg(options::OPT_shared))) {
6748 if (Args.hasArg(options::OPT_static)) {
6751 if (Args.hasArg(options::OPT_rdynamic))
6755 if (Args.hasArg(options::OPT_shared)) {
6770 if (!Args.hasArg(options::OPT_nostdlib) &&
6771 !Args.hasArg(options::OPT_nostartfiles)) {
6772 if (!Args.hasArg(options::OPT_shared)) {
6773 if (Args.hasArg(options::OPT_pg))
6774 CmdArgs.push_back(Args.MakeArgString(
6777 CmdArgs.push_back(Args.MakeArgString(
6779 CmdArgs.push_back(Args.MakeArgString(
6782 CmdArgs.push_back(Args.MakeArgString(
6787 Args.AddAllArgs(CmdArgs, options::OPT_L);
6788 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
6789 Args.AddAllArgs(CmdArgs, options::OPT_e);
6791 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
6793 if (!Args.hasArg(options::OPT_nostdlib) &&
6794 !Args.hasArg(options::OPT_nodefaultlibs)) {
6796 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
6797 if (Args.hasArg(options::OPT_pg))
6803 if (Args.hasArg(options::OPT_pthread)) {
6804 if (!Args.hasArg(options::OPT_shared) &&
6805 Args.hasArg(options::OPT_pg))
6811 if (!Args.hasArg(options::OPT_shared)) {
6812 if (Args.hasArg(options::OPT_pg))
6832 CmdArgs.push_back(Args.MakeArgString("-lclang_rt." + MyArch));
6835 if (!Args.hasArg(options::OPT_nostdlib) &&
6836 !Args.hasArg(options::OPT_nostartfiles)) {
6837 if (!Args.hasArg(options::OPT_shared))
6838 CmdArgs.push_back(Args.MakeArgString(
6841 CmdArgs.push_back(Args.MakeArgString(
6846 Args.MakeArgString(getToolChain().GetLinkerPath());
6853 const ArgList &Args,
6855 claimNoWarnArgs(Args);
6870 mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName);
6884 addAssemblerKPIC(Args, CmdArgs);
6891 StringRef FloatABI = arm::getARMFloatABI(D, Args, Triple);
6916 addAssemblerKPIC(Args, CmdArgs);
6919 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
6928 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as"));
6935 const ArgList &Args,
6941 !Args.hasArg(options::OPT_shared) &&
6942 (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault());
6946 Args.ClaimAllArgs(options::OPT_g_Group);
6948 Args.ClaimAllArgs(options::OPT_emit_llvm);
6951 Args.ClaimAllArgs(options::OPT_w);
6954 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
6959 if (Args.hasArg(options::OPT_static)) {
6962 if (Args.hasArg(options::OPT_rdynamic))
6965 if (Args.hasArg(options::OPT_shared)) {
7000 if (!Args.hasArg(options::OPT_nostdlib) &&
7001 !Args.hasArg(options::OPT_nostartfiles)) {
7003 if (!Args.hasArg(options::OPT_shared)) {
7004 if (Args.hasArg(options::OPT_pg))
7012 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crt1)));
7014 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o")));
7017 if (Args.hasArg(options::OPT_static))
7019 else if (Args.hasArg(options::OPT_shared) || IsPIE)
7024 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin)));
7027 Args.AddAllArgs(CmdArgs, options::OPT_L);
7030 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
7031 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
7032 Args.AddAllArgs(CmdArgs, options::OPT_e);
7033 Args.AddAllArgs(CmdArgs, options::OPT_s);
7034 Args.AddAllArgs(CmdArgs, options::OPT_t);
7035 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
7036 Args.AddAllArgs(CmdArgs, options::OPT_r);
7038 if (D.IsUsingLTO(getToolChain(), Args))
7039 AddGoldPlugin(ToolChain, Args, CmdArgs);
7041 bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
7042 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
7044 if (!Args.hasArg(options::OPT_nostdlib) &&
7045 !Args.hasArg(options::OPT_nodefaultlibs)) {
7047 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
7048 if (Args.hasArg(options::OPT_pg))
7057 if (Args.hasArg(options::OPT_pg))
7061 if (Args.hasArg(options::OPT_static)) {
7063 } else if (Args.hasArg(options::OPT_pg)) {
7071 if (Args.hasArg(options::OPT_pthread)) {
7072 if (Args.hasArg(options::OPT_pg))
7078 if (Args.hasArg(options::OPT_pg)) {
7079 if (Args.hasArg(options::OPT_shared))
7089 if (Args.hasArg(options::OPT_static)) {
7091 } else if (Args.hasArg(options::OPT_pg)) {
7100 if (!Args.hasArg(options::OPT_nostdlib) &&
7101 !Args.hasArg(options::OPT_nostartfiles)) {
7102 if (Args.hasArg(options::OPT_shared) || IsPIE)
7103 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtendS.o")));
7105 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtend.o")));
7106 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
7109 addProfileRT(ToolChain, Args, CmdArgs);
7112 Args.MakeArgString(getToolChain().GetLinkerPath());
7119 const ArgList &Args,
7121 claimNoWarnArgs(Args);
7134 std::string MArch(arm::getARMTargetCPU(Args, getToolChain().getTriple()));
7135 CmdArgs.push_back(Args.MakeArgString("-mcpu=" + MArch));
7145 mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName);
7159 addAssemblerKPIC(Args, CmdArgs);
7165 addAssemblerKPIC(Args, CmdArgs);
7171 addAssemblerKPIC(Args, CmdArgs);
7178 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
7187 const char *Exec = Args.MakeArgString((getToolChain().GetProgramPath("as")));
7194 const ArgList &Args,
7200 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
7203 if (Args.hasArg(options::OPT_static)) {
7206 if (Args.hasArg(options::OPT_rdynamic))
7208 if (Args.hasArg(options::OPT_shared)) {
7242 arm::appendEBLinkFlags(Args, CmdArgs, getToolChain().getTriple());
7260 if (mips::hasMipsAbiArg(Args, "32")) {
7266 } else if (mips::hasMipsAbiArg(Args, "64")) {
7306 if (!Args.hasArg(options::OPT_nostdlib) &&
7307 !Args.hasArg(options::OPT_nostartfiles)) {
7308 if (!Args.hasArg(options::OPT_shared)) {
7309 CmdArgs.push_back(Args.MakeArgString(
7311 CmdArgs.push_back(Args.MakeArgString(
7313 CmdArgs.push_back(Args.MakeArgString(
7316 CmdArgs.push_back(Args.MakeArgString(
7318 CmdArgs.push_back(Args.MakeArgString(
7323 Args.AddAllArgs(CmdArgs, options::OPT_L);
7324 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
7325 Args.AddAllArgs(CmdArgs, options::OPT_e);
7326 Args.AddAllArgs(CmdArgs, options::OPT_s);
7327 Args.AddAllArgs(CmdArgs, options::OPT_t);
7328 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
7329 Args.AddAllArgs(CmdArgs, options::OPT_r);
7331 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
7355 if (!Args.hasArg(options::OPT_nostdlib) &&
7356 !Args.hasArg(options::OPT_nodefaultlibs)) {
7358 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
7361 if (Args.hasArg(options::OPT_pthread))
7366 if (Args.hasArg(options::OPT_static)) {
7382 if (!Args.hasArg(options::OPT_nostdlib) &&
7383 !Args.hasArg(options::OPT_nostartfiles)) {
7384 if (!Args.hasArg(options::OPT_shared))
7385 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
7388 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
7390 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
7394 addProfileRT(getToolChain(), Args, CmdArgs);
7396 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath());
7403 const ArgList &Args,
7405 claimNoWarnArgs(Args);
7467 getToolChain().getDriver(), Args,
7468 llvm::Triple(getToolChain().ComputeEffectiveClangTriple(Args)));
7469 CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=" + ARMFloatABI));
7471 Args.AddLastArg(CmdArgs, options::OPT_march_EQ);
7477 if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) &&
7481 Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ);
7482 Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ);
7491 mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName);
7503 if (Arg *A = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
7526 if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {
7528 CmdArgs.push_back(Args.MakeArgString("-mnan=2008"));
7532 if (Arg *A = Args.getLastArg(options::OPT_mfp32, options::OPT_mfpxx,
7535 A->render(Args, CmdArgs);
7542 if (Arg *A = Args.getLastArg(options::OPT_mips16,
7546 A->render(Args, CmdArgs);
7553 Args.AddLastArg(CmdArgs, options::OPT_mmicromips,
7555 Args.AddLastArg(CmdArgs, options::OPT_mdsp, options::OPT_mno_dsp);
7556 Args.AddLastArg(CmdArgs, options::OPT_mdspr2, options::OPT_mno_dspr2);
7558 if (Arg *A = Args.getLastArg(options::OPT_mmsa, options::OPT_mno_msa)) {
7562 CmdArgs.push_back(Args.MakeArgString("-mmsa"));
7565 Args.AddLastArg(CmdArgs, options::OPT_mhard_float,
7568 Args.AddLastArg(CmdArgs, options::OPT_modd_spreg,
7577 StringRef CPUName = getSystemZTargetCPU(Args);
7578 CmdArgs.push_back(Args.MakeArgString("-march=" + CPUName));
7584 addAssemblerKPIC(Args, CmdArgs);
7586 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
7595 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as"));
7601 if (Args.hasArg(options::OPT_gsplit_dwarf) &&
7603 SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output,
7604 SplitDebugName(Args, Inputs));
7608 ArgStringList &CmdArgs, const ArgList &Args) {
7610 bool StaticLibgcc = Args.hasArg(options::OPT_static_libgcc) ||
7611 Args.hasArg(options::OPT_static);
7628 else if (!Args.hasArg(options::OPT_shared) && D.CCCIsCXX())
7640 static std::string getLinuxDynamicLinker(const ArgList &Args,
7672 mips::getMipsCPUAndABI(Args, ToolChain.getTriple(), CPUName, ABIName);
7673 bool IsNaN2008 = mips::isNaN2008(Args, ToolChain.getTriple());
7681 if (mips::isUCLibc(Args))
7690 if (ppc::hasPPCAbiArg(Args, "elfv2"))
7694 if (ppc::hasPPCAbiArg(Args, "elfv1"))
7709 ArgStringList &CmdArgs, const ArgList &Args) {
7711 ToolChain::RuntimeLibType RLT = TC.GetRuntimeLibType(Args);
7719 addClangRT(TC, Args, CmdArgs);
7724 AddLibgcc(TC.getTriple(), D, CmdArgs, Args);
7729 static const char *getLDMOption(const llvm::Triple &T, const ArgList &Args) {
7758 if (mips::hasMipsAbiArg(Args, "n32"))
7762 if (mips::hasMipsAbiArg(Args, "n32"))
7779 const ArgList &Args,
7787 !Args.hasArg(options::OPT_shared) &&
7788 !Args.hasArg(options::OPT_static) &&
7789 (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault());
7794 Args.ClaimAllArgs(options::OPT_g_Group);
7796 Args.ClaimAllArgs(options::OPT_emit_llvm);
7799 Args.ClaimAllArgs(options::OPT_w);
7802 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
7807 if (Args.hasArg(options::OPT_rdynamic))
7810 if (Args.hasArg(options::OPT_s))
7815 arm::appendEBLinkFlags(Args, CmdArgs, getToolChain().getTriple());
7820 if (!Args.hasArg(options::OPT_static)) {
7825 CmdArgs.push_back(getLDMOption(ToolChain.getTriple(), Args));
7827 if (Args.hasArg(options::OPT_static)) {
7835 } else if (Args.hasArg(options::OPT_shared)) {
7843 (!Args.hasArg(options::OPT_static) &&
7844 !Args.hasArg(options::OPT_shared))) {
7846 CmdArgs.push_back(Args.MakeArgString(
7847 D.DyldPrefix + getLinuxDynamicLinker(Args, ToolChain)));
7853 if (!Args.hasArg(options::OPT_nostdlib) &&
7854 !Args.hasArg(options::OPT_nostartfiles)) {
7857 if (!Args.hasArg(options::OPT_shared)){
7858 if (Args.hasArg(options::OPT_pg))
7866 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crt1)));
7868 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o")));
7872 if (Args.hasArg(options::OPT_static))
7874 else if (Args.hasArg(options::OPT_shared))
7880 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin)));
7883 ToolChain.AddFastMathRuntimeIfAvailable(Args, CmdArgs);
7886 Args.AddAllArgs(CmdArgs, options::OPT_L);
7887 Args.AddAllArgs(CmdArgs, options::OPT_u);
7892 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
7894 if (D.IsUsingLTO(getToolChain(), Args))
7895 AddGoldPlugin(ToolChain, Args, CmdArgs);
7897 if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
7900 bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs);
7901 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
7903 addProfileRT(getToolChain(), Args, CmdArgs);
7906 !Args.hasArg(options::OPT_nostdlib) &&
7907 !Args.hasArg(options::OPT_nodefaultlibs)) {
7908 bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
7909 !Args.hasArg(options::OPT_static);
7912 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
7918 Args.ClaimAllArgs(options::OPT_stdlib_EQ);
7920 if (!Args.hasArg(options::OPT_nostdlib)) {
7921 if (!Args.hasArg(options::OPT_nodefaultlibs)) {
7922 if (Args.hasArg(options::OPT_static))
7929 if (Args.hasArg(options::OPT_fopenmp)) {
7931 } else if (const Arg *A = Args.getLastArg(options::OPT_fopenmp_EQ)) {
7954 AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
7956 if ((Args.hasArg(options::OPT_pthread) ||
7957 Args.hasArg(options::OPT_pthreads) || UsedOpenMPLib != LibUnknown) &&
7963 if (Args.hasArg(options::OPT_static))
7966 AddRunTimeLibs(ToolChain, D, CmdArgs, Args);
7969 if (!Args.hasArg(options::OPT_nostartfiles)) {
7971 if (Args.hasArg(options::OPT_shared))
7978 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtend)));
7980 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
7996 const ArgList &Args,
8005 gnutools::Assemble::ConstructJob(C, JA, Output, NewInputs, Args,
8017 const ArgList &Args,
8024 !Args.hasArg(options::OPT_dynamic) &&
8025 !Args.hasArg(options::OPT_shared);
8030 Args.ClaimAllArgs(options::OPT_g_Group);
8032 Args.ClaimAllArgs(options::OPT_emit_llvm);
8035 Args.ClaimAllArgs(options::OPT_w);
8038 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
8040 if (Args.hasArg(options::OPT_rdynamic))
8043 if (Args.hasArg(options::OPT_s))
8067 else if (Args.hasArg(options::OPT_shared))
8072 if (!Args.hasArg(options::OPT_nostdlib) &&
8073 !Args.hasArg(options::OPT_nostartfiles)) {
8074 if (!Args.hasArg(options::OPT_shared))
8075 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt1.o")));
8076 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o")));
8081 else if (Args.hasArg(options::OPT_shared))
8085 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin)));
8088 Args.AddAllArgs(CmdArgs, options::OPT_L);
8089 Args.AddAllArgs(CmdArgs, options::OPT_u);
8094 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
8096 if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
8099 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
8102 !Args.hasArg(options::OPT_nostdlib) &&
8103 !Args.hasArg(options::OPT_nodefaultlibs)) {
8104 bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
8108 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
8114 if (!Args.hasArg(options::OPT_nostdlib)) {
8115 if (!Args.hasArg(options::OPT_nodefaultlibs)) {
8121 if (Args.hasArg(options::OPT_pthread) ||
8122 Args.hasArg(options::OPT_pthreads) ||
8137 if (!Args.hasArg(options::OPT_nostartfiles)) {
8139 if (Args.hasArg(options::OPT_shared))
8144 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtend)));
8145 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
8157 const ArgList &Args,
8159 claimNoWarnArgs(Args);
8162 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
8170 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as"));
8177 const ArgList &Args,
8189 if (!Args.hasArg(options::OPT_nostdlib) &&
8190 !Args.hasArg(options::OPT_nostartfiles)) {
8191 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crt1.o")));
8192 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crti.o")));
8193 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o")));
8194 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o")));
8197 Args.AddAllArgs(CmdArgs, options::OPT_L);
8198 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
8199 Args.AddAllArgs(CmdArgs, options::OPT_e);
8201 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
8203 addProfileRT(getToolChain(), Args, CmdArgs);
8205 if (!Args.hasArg(options::OPT_nostdlib) &&
8206 !Args.hasArg(options::OPT_nodefaultlibs)) {
8208 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
8213 if (!Args.hasArg(options::OPT_nostdlib) &&
8214 !Args.hasArg(options::OPT_nostartfiles)) {
8215 if (Args.hasArg(options::OPT_pthread))
8221 Args.MakeArgString(getToolChain().GetFilePath("crtend.o")));
8224 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath());
8235 const ArgList &Args,
8237 claimNoWarnArgs(Args);
8245 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
8253 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as"));
8260 const ArgList &Args,
8267 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
8270 if (Args.hasArg(options::OPT_static)) {
8273 if (Args.hasArg(options::OPT_rdynamic))
8275 if (Args.hasArg(options::OPT_shared))
8298 if (!Args.hasArg(options::OPT_nostdlib) &&
8299 !Args.hasArg(options::OPT_nostartfiles)) {
8300 if (!Args.hasArg(options::OPT_shared)) {
8301 if (Args.hasArg(options::OPT_pg))
8302 CmdArgs.push_back(Args.MakeArgString(
8305 if (Args.hasArg(options::OPT_pie))
8306 CmdArgs.push_back(Args.MakeArgString(
8309 CmdArgs.push_back(Args.MakeArgString(
8313 CmdArgs.push_back(Args.MakeArgString(
8315 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
8316 CmdArgs.push_back(Args.MakeArgString(
8319 CmdArgs.push_back(Args.MakeArgString(
8323 Args.AddAllArgs(CmdArgs, options::OPT_L);
8324 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
8325 Args.AddAllArgs(CmdArgs, options::OPT_e);
8327 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
8329 if (!Args.hasArg(options::OPT_nostdlib) &&
8330 !Args.hasArg(options::OPT_nodefaultlibs)) {
8338 if (!Args.hasArg(options::OPT_static)) {
8349 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
8353 if (Args.hasArg(options::OPT_pthread))
8356 if (!Args.hasArg(options::OPT_nolibc)) {
8361 if (Args.hasArg(options::OPT_static) ||
8362 Args.hasArg(options::OPT_static_libgcc)) {
8366 if (Args.hasArg(options::OPT_shared_libgcc)) {
8368 if (!Args.hasArg(options::OPT_shared))
8378 if (Args.hasArg(options::OPT_shared)) {
8386 if (!Args.hasArg(options::OPT_nostdlib) &&
8387 !Args.hasArg(options::OPT_nostartfiles)) {
8388 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
8389 CmdArgs.push_back(Args.MakeArgString(
8392 CmdArgs.push_back(Args.MakeArgString(
8394 CmdArgs.push_back(Args.MakeArgString(
8398 addProfileRT(getToolChain(), Args, CmdArgs);
8400 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath());
8427 const ArgList &Args,
8434 CmdArgs.push_back(Args.MakeArgString(std::string("-out:") +
8437 if (!Args.hasArg(options::OPT_nostdlib) &&
8438 !Args.hasArg(options::OPT_nostartfiles) && !C.getDriver().IsCLMode())
8465 Args.MakeArgString(std::string("-libpath:") + LibDir.c_str()));
8470 CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") +
8476 if (Args.hasArg(options::OPT_g_Group))
8479 bool DLL = Args.hasArg(options::OPT__SLASH_LD,
8483 CmdArgs.push_back(Args.MakeArgString("-dll"));
8487 CmdArgs.push_back(Args.MakeArgString(std::string("-implib:") +
8492 CmdArgs.push_back(Args.MakeArgString("-debug"));
8493 CmdArgs.push_back(Args.MakeArgString("-incremental:no"));
8494 if (Args.hasArg(options::OPT__SLASH_MD, options::OPT__SLASH_MDd)) {
8500 CmdArgs.push_back(Args.MakeArgString(getCompilerRT(TC, Component)));
8503 CmdArgs.push_back(Args.MakeArgString("-include:___asan_seh_interceptor"));
8505 CmdArgs.push_back(Args.MakeArgString(getCompilerRT(TC, "asan_dll_thunk")));
8512 CmdArgs.push_back(Args.MakeArgString(getCompilerRT(TC, Component)));
8516 Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
8532 LinkLibArg = Args.MakeArgString(Lib);
8534 LinkLibArg = Args.MakeArgString(Lib + ".lib");
8541 A.renderAsInput(Args, CmdArgs);
8548 StringRef Linker = Args.getLastArgValue(options::OPT_fuse_ld_EQ, "link");
8564 const char *Exec = Args.MakeArgString(linkPath);
8571 const ArgList &Args,
8573 C.addCommand(GetCommand(C, JA, Output, Inputs, Args, LinkingOutput));
8578 const InputInfoList &Inputs, const ArgList &Args,
8589 Args.AddAllArgs(CmdArgs, options::OPT_D, options::OPT_U);
8590 Args.AddAllArgs(CmdArgs, options::OPT_I);
8593 if (Arg *A = Args.getLastArg(options::OPT_O, options::OPT_O0)) {
8599 A->render(Args, CmdArgs);
8608 if (Args.hasFlag(options::OPT__SLASH_GR_, options::OPT__SLASH_GR,
8611 if (Arg *A = Args.getLastArg(options::OPT_ffunction_sections,
8616 if (Arg *A = Args.getLastArg(options::OPT_fdata_sections,
8620 if (Args.hasArg(options::OPT_fsyntax_only))
8622 if (Args.hasArg(options::OPT_g_Flag, options::OPT_gline_tables_only))
8626 Args.getAllArgValues(options::OPT_include);
8628 CmdArgs.push_back(Args.MakeArgString(std::string("/FI") + Include));
8631 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_LD);
8632 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_LDd);
8633 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_EH);
8636 if (Arg *A = Args.getLastArg(options::OPT__SLASH_MD, options::OPT__SLASH_MDd,
8638 A->render(Args, CmdArgs);
8649 II.getInputArg().renderAsInput(Args, CmdArgs);
8653 const char *Fo = Args.MakeArgString(std::string("/Fo") +
8660 return llvm::make_unique<Command>(JA, *this, Args.MakeArgString(Exec),
8671 const ArgList &Args,
8673 claimNoWarnArgs(Args);
8681 if (Args.hasArg(options::OPT_v))
8684 if (Arg *A = Args.getLastArg(options::OPT_g_Group))
8688 if (Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm,
8692 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
8698 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("xcc"));
8705 const ArgList &Args,
8716 if (Args.hasArg(options::OPT_v))
8719 if (exceptionSettings(Args, getToolChain().getTriple()))
8722 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
8724 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("xcc"));
8731 const ArgList &Args,
8733 claimNoWarnArgs(Args);
8752 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler);
8761 Exec = Args.MakeArgString(Assembler);
8769 const ArgList &Args,
8780 Args.ClaimAllArgs(options::OPT_g_Group);
8782 Args.ClaimAllArgs(options::OPT_emit_llvm);
8784 Args.ClaimAllArgs(options::OPT_w);
8788 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
8790 if (Args.hasArg(options::OPT_pie))
8792 if (Args.hasArg(options::OPT_rdynamic))
8794 if (Args.hasArg(options::OPT_s))
8814 if (Args.hasArg(options::OPT_shared)) {
8833 CmdArgs.push_back(Args.MakeArgString(EntryPoint));
8837 CmdArgs.push_back(Args.hasArg(options::OPT_static) ? "-Bstatic"
8840 if (!Args.hasArg(options::OPT_nostdlib) &&
8841 !Args.hasArg(options::OPT_nostartfiles)) {
8843 CmdArgs.push_back(Args.MakeArgString(EntryPoint));
8855 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_rdynamic)) {
8860 CmdArgs.push_back(Args.MakeArgString(ImpLib));
8863 if (!Args.hasArg(options::OPT_nostdlib) &&
8864 !Args.hasArg(options::OPT_nostartfiles)) {
8869 Args.hasArg(options::OPT_shared) ? "crtbeginS.obj" : "crtbegin.obj";
8870 CmdArgs.push_back(Args.MakeArgString(CRTPath + CRTBegin));
8873 Args.AddAllArgs(CmdArgs, options::OPT_L);
8877 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + Path));
8879 AddLinkerInputs(TC, Inputs, Args, CmdArgs);
8881 if (D.CCCIsCXX() && !Args.hasArg(options::OPT_nostdlib) &&
8882 !Args.hasArg(options::OPT_nodefaultlibs)) {
8883 bool StaticCXX = Args.hasArg(options::OPT_static_libstdcxx) &&
8884 !Args.hasArg(options::OPT_static);
8887 TC.AddCXXStdlibLibArgs(Args, CmdArgs);
8892 if (!Args.hasArg(options::OPT_nostdlib)) {
8893 if (!Args.hasArg(options::OPT_nodefaultlibs)) {
8896 AddRunTimeLibs(TC, D, CmdArgs, Args);
8901 Exec = Args.MakeArgString(Linker);