Lines Matching refs:Args
55 static void handleTargetFeaturesGroup(const ArgList &Args, in handleTargetFeaturesGroup() argument
58 for (const Arg *A : Args.filtered(Group)) { in handleTargetFeaturesGroup()
69 Features.push_back(Args.MakeArgString((IsNegative ? "-" : "+") + Name)); in handleTargetFeaturesGroup()
113 static void CheckPreprocessingOptions(const Driver &D, const ArgList &Args) { in CheckPreprocessingOptions() argument
114 if (Arg *A = Args.getLastArg(options::OPT_C, options::OPT_CC)) { in CheckPreprocessingOptions()
115 if (!Args.hasArg(options::OPT_E) && !Args.hasArg(options::OPT__SLASH_P) && in CheckPreprocessingOptions()
116 !Args.hasArg(options::OPT__SLASH_EP) && !D.CCCIsCPP()) { in CheckPreprocessingOptions()
118 << A->getBaseArg().getAsString(Args) in CheckPreprocessingOptions()
126 static void CheckCodeGenerationOptions(const Driver &D, const ArgList &Args) { in CheckCodeGenerationOptions() argument
128 if (Args.hasArg(options::OPT_static)) in CheckCodeGenerationOptions()
130 Args.getLastArg(options::OPT_dynamic, options::OPT_mdynamic_no_pic)) in CheckCodeGenerationOptions()
131 D.Diag(diag::err_drv_argument_not_allowed_with) << A->getAsString(Args) in CheckCodeGenerationOptions()
181 static void addDirectoryList(const ArgList &Args, ArgStringList &CmdArgs, in addDirectoryList() argument
201 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + ".")); in addDirectoryList()
209 Args.MakeArgString(std::string(ArgName) + Dirs.substr(0, Delim))); in addDirectoryList()
212 CmdArgs.push_back(Args.MakeArgString(Dirs.substr(0, Delim))); in addDirectoryList()
220 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + ".")); in addDirectoryList()
227 CmdArgs.push_back(Args.MakeArgString(std::string(ArgName) + Dirs)); in addDirectoryList()
230 CmdArgs.push_back(Args.MakeArgString(Dirs)); in addDirectoryList()
236 const ArgList &Args, ArgStringList &CmdArgs) { in AddLinkerInputs() argument
241 Args.AddAllArgValues(CmdArgs, options::OPT_Zlinker_input); in AddLinkerInputs()
259 TC.AddCXXStdlibLibArgs(Args, CmdArgs); in AddLinkerInputs()
261 TC.AddCCKextLibArgs(Args, CmdArgs); in AddLinkerInputs()
265 A.render(Args, CmdArgs); in AddLinkerInputs()
267 A.renderAsInput(Args, CmdArgs); in AddLinkerInputs()
274 addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH"); in AddLinkerInputs()
279 static bool isObjCAutoRefCount(const ArgList &Args) { in isObjCAutoRefCount() argument
280 return Args.hasFlag(options::OPT_fobjc_arc, options::OPT_fno_objc_arc, false); in isObjCAutoRefCount()
284 static bool isObjCRuntimeLinked(const ArgList &Args) { in isObjCRuntimeLinked() argument
285 if (isObjCAutoRefCount(Args)) { in isObjCRuntimeLinked()
286 Args.ClaimAllArgs(options::OPT_fobjc_link_runtime); in isObjCRuntimeLinked()
289 return Args.hasArg(options::OPT_fobjc_link_runtime); in isObjCRuntimeLinked()
300 const Driver &D, const ArgList &Args, in AddPreprocessingOptions() argument
308 CheckPreprocessingOptions(D, Args); in AddPreprocessingOptions()
310 Args.AddLastArg(CmdArgs, options::OPT_C); in AddPreprocessingOptions()
311 Args.AddLastArg(CmdArgs, options::OPT_CC); in AddPreprocessingOptions()
314 if ((A = Args.getLastArg(options::OPT_M, options::OPT_MM)) || in AddPreprocessingOptions()
315 (A = Args.getLastArg(options::OPT_MD)) || in AddPreprocessingOptions()
316 (A = Args.getLastArg(options::OPT_MMD))) { in AddPreprocessingOptions()
319 if (Arg *MF = Args.getLastArg(options::OPT_MF)) { in AddPreprocessingOptions()
328 DepFile = getDependencyFileName(Args, Inputs); in AddPreprocessingOptions()
335 if (!Args.hasArg(options::OPT_MT) && !Args.hasArg(options::OPT_MQ)) { in AddPreprocessingOptions()
340 Arg *OutputOpt = Args.getLastArg(options::OPT_o); in AddPreprocessingOptions()
349 DepTarget = Args.MakeArgString(llvm::sys::path::filename(P)); in AddPreprocessingOptions()
355 CmdArgs.push_back(Args.MakeArgString(Quoted)); in AddPreprocessingOptions()
362 !Args.hasArg(options::OPT_fno_module_file_deps)) || in AddPreprocessingOptions()
363 Args.hasArg(options::OPT_fmodule_file_deps)) in AddPreprocessingOptions()
367 if (Args.hasArg(options::OPT_MG)) { in AddPreprocessingOptions()
374 Args.AddLastArg(CmdArgs, options::OPT_MP); in AddPreprocessingOptions()
375 Args.AddLastArg(CmdArgs, options::OPT_MV); in AddPreprocessingOptions()
378 for (const Arg *A : Args.filtered(options::OPT_MT, options::OPT_MQ)) { in AddPreprocessingOptions()
385 CmdArgs.push_back(Args.MakeArgString(Quoted)); in AddPreprocessingOptions()
389 A->render(Args, CmdArgs); in AddPreprocessingOptions()
401 const Arg *YcArg = Args.getLastArg(options::OPT__SLASH_Yc); in AddPreprocessingOptions()
402 const Arg *YuArg = Args.getLastArg(options::OPT__SLASH_Yu); in AddPreprocessingOptions()
403 for (const Arg *A : Args.filtered(options::OPT_clang_i_Group)) { in AddPreprocessingOptions()
419 CmdArgs.push_back(Args.MakeArgString(Twine("-find-pch-source=") + in AddPreprocessingOptions()
425 for (const Arg *A : Args.filtered(options::OPT_clang_i_Group)) { in AddPreprocessingOptions()
459 Args.MakeArgString(D.GetClPchPath(C, A->getValue()))); in AddPreprocessingOptions()
505 CmdArgs.push_back(Args.MakeArgString(P)); in AddPreprocessingOptions()
510 << A->getAsString(Args); in AddPreprocessingOptions()
524 A->render(Args, CmdArgs); in AddPreprocessingOptions()
527 Args.AddAllArgs(CmdArgs, in AddPreprocessingOptions()
537 Args.AddAllArgValues(CmdArgs, options::OPT_Wp_COMMA, in AddPreprocessingOptions()
541 if (Arg *A = Args.getLastArg(options::OPT_I_)) in AddPreprocessingOptions()
542 D.Diag(diag::err_drv_I_dash_not_supported) << A->getAsString(Args); in AddPreprocessingOptions()
548 if (!Args.hasArg(options::OPT_isysroot)) { in AddPreprocessingOptions()
559 addDirectoryList(Args, CmdArgs, "-I", "CPATH"); in AddPreprocessingOptions()
561 addDirectoryList(Args, CmdArgs, "-c-isystem", "C_INCLUDE_PATH"); in AddPreprocessingOptions()
563 addDirectoryList(Args, CmdArgs, "-cxx-isystem", "CPLUS_INCLUDE_PATH"); in AddPreprocessingOptions()
565 addDirectoryList(Args, CmdArgs, "-objc-isystem", "OBJC_INCLUDE_PATH"); in AddPreprocessingOptions()
567 addDirectoryList(Args, CmdArgs, "-objcxx-isystem", "OBJCPLUS_INCLUDE_PATH"); in AddPreprocessingOptions()
576 getToolChain().AddClangCXXStdlibIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
578 AuxToolChain->AddClangCXXStdlibIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
583 getToolChain().AddClangSystemIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
585 AuxToolChain->AddClangCXXStdlibIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
588 getToolChain().AddIAMCUIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
593 getToolChain().AddCudaIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
654 static void getARMArchCPUFromArgs(const ArgList &Args, llvm::StringRef &Arch, in getARMArchCPUFromArgs() argument
656 if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) in getARMArchCPUFromArgs()
658 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) in getARMArchCPUFromArgs()
664 Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) { in getARMArchCPUFromArgs()
676 const ArgList &Args, StringRef HWDiv, in getARMHWDivFeatures() argument
680 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); in getARMHWDivFeatures()
685 const ArgList &Args, StringRef FPU, in getARMFPUFeatures() argument
689 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); in getARMFPUFeatures()
711 static void checkARMArchName(const Driver &D, const Arg *A, const ArgList &Args, in checkARMArchName() argument
720 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); in checkARMArchName()
724 static void checkARMCPUName(const Driver &D, const Arg *A, const ArgList &Args, in checkARMCPUName() argument
733 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); in checkARMCPUName()
745 arm::FloatABI arm::getARMFloatABI(const ToolChain &TC, const ArgList &Args) { in getARMFloatABI() argument
747 const llvm::Triple Triple(TC.ComputeEffectiveClangTriple(Args)); in getARMFloatABI()
751 Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float, in getARMFloatABI()
764 D.Diag(diag::err_drv_invalid_mfloat_abi) << A->getAsString(Args); in getARMFloatABI()
773 D.Diag(diag::err_drv_unsupported_opt_for_target) << A->getAsString(Args) in getARMFloatABI()
849 const ArgList &Args, in getARMTargetFeatures() argument
855 Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext); in getARMTargetFeatures()
856 arm::FloatABI ABI = arm::getARMFloatABI(TC, Args); in getARMTargetFeatures()
884 Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) { in getARMTargetFeatures()
899 const Arg *ArchArg = Args.getLastArg(options::OPT_march_EQ); in getARMTargetFeatures()
904 << ArchArg->getAsString(Args); in getARMTargetFeatures()
906 checkARMArchName(D, WaArch, Args, ArchName, Features, Triple); in getARMTargetFeatures()
908 D.Diag(clang::diag::warn_drv_unused_argument) << WaArch->getAsString(Args); in getARMTargetFeatures()
911 checkARMArchName(D, ArchArg, Args, ArchName, Features, Triple); in getARMTargetFeatures()
915 const Arg *CPUArg = Args.getLastArg(options::OPT_mcpu_EQ); in getARMTargetFeatures()
920 << CPUArg->getAsString(Args); in getARMTargetFeatures()
922 checkARMCPUName(D, WaCPU, Args, CPUName, ArchName, Features, Triple); in getARMTargetFeatures()
925 checkARMCPUName(D, CPUArg, Args, CPUName, ArchName, Features, Triple); in getARMTargetFeatures()
934 Args.MakeArgString((F.second ? "+" : "-") + F.first())); in getARMTargetFeatures()
938 const Arg *FPUArg = Args.getLastArg(options::OPT_mfpu_EQ); in getARMTargetFeatures()
942 << FPUArg->getAsString(Args); in getARMTargetFeatures()
943 getARMFPUFeatures(D, WaFPU, Args, StringRef(WaFPU->getValue()).substr(6), in getARMTargetFeatures()
946 getARMFPUFeatures(D, FPUArg, Args, FPUArg->getValue(), Features); in getARMTargetFeatures()
950 const Arg *HDivArg = Args.getLastArg(options::OPT_mhwdiv_EQ); in getARMTargetFeatures()
954 << HDivArg->getAsString(Args); in getARMTargetFeatures()
955 getARMHWDivFeatures(D, WaHDiv, Args, in getARMTargetFeatures()
958 getARMHWDivFeatures(D, HDivArg, Args, HDivArg->getValue(), Features); in getARMTargetFeatures()
969 if (Arg *A = Args.getLastArg(options::OPT_mcrc, options::OPT_mnocrc)) { in getARMTargetFeatures()
979 if (Arg *A = Args.getLastArg(options::OPT_mlong_calls, in getARMTargetFeatures()
991 else if (Arg *A = Args.getLastArg(options::OPT_mno_unaligned_access, in getARMTargetFeatures()
1032 if (Args.hasArg(options::OPT_ffixed_r9)) in getARMTargetFeatures()
1036 if (KernelOrKext || Args.hasArg(options::OPT_mno_movt)) in getARMTargetFeatures()
1040 void Clang::AddARMTargetArgs(const llvm::Triple &Triple, const ArgList &Args, in AddARMTargetArgs() argument
1046 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) { in AddARMTargetArgs()
1085 arm::FloatABI ABI = arm::getARMFloatABI(getToolChain(), Args); in AddARMTargetArgs()
1104 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge, in AddARMTargetArgs()
1113 if (!Args.hasFlag(options::OPT_mimplicit_float, in AddARMTargetArgs()
1121 static std::string getAArch64TargetCPU(const ArgList &Args) { in getAArch64TargetCPU() argument
1125 if ((A = Args.getLastArg(options::OPT_mtune_EQ))) { in getAArch64TargetCPU()
1127 } else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) { in getAArch64TargetCPU()
1140 if (Args.getLastArg(options::OPT_arch)) in getAArch64TargetCPU()
1146 void Clang::AddAArch64TargetArgs(const ArgList &Args, in AddAArch64TargetArgs() argument
1148 std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args); in AddAArch64TargetArgs()
1151 if (!Args.hasFlag(options::OPT_mred_zone, options::OPT_mno_red_zone, true) || in AddAArch64TargetArgs()
1152 Args.hasArg(options::OPT_mkernel) || in AddAArch64TargetArgs()
1153 Args.hasArg(options::OPT_fapple_kext)) in AddAArch64TargetArgs()
1156 if (!Args.hasFlag(options::OPT_mimplicit_float, in AddAArch64TargetArgs()
1161 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) in AddAArch64TargetArgs()
1171 if (Arg *A = Args.getLastArg(options::OPT_mfix_cortex_a53_835769, in AddAArch64TargetArgs()
1185 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge, in AddAArch64TargetArgs()
1197 void mips::getMipsCPUAndABI(const ArgList &Args, const llvm::Triple &Triple, in getMipsCPUAndABI() argument
1220 if (Arg *A = Args.getLastArg(options::OPT_march_EQ, options::OPT_mcpu_EQ)) in getMipsCPUAndABI()
1223 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) { in getMipsCPUAndABI()
1293 std::string mips::getMipsABILibSuffix(const ArgList &Args, in getMipsABILibSuffix() argument
1296 tools::mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName); in getMipsABILibSuffix()
1313 static mips::FloatABI getMipsFloatABI(const Driver &D, const ArgList &Args) { in getMipsFloatABI() argument
1316 Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float, in getMipsFloatABI()
1328 D.Diag(diag::err_drv_invalid_mfloat_abi) << A->getAsString(Args); in getMipsFloatABI()
1346 static void AddTargetFeature(const ArgList &Args, in AddTargetFeature() argument
1350 if (Arg *A = Args.getLastArg(OnOpt, OffOpt)) { in AddTargetFeature()
1352 Features.push_back(Args.MakeArgString("+" + FeatureName)); in AddTargetFeature()
1354 Features.push_back(Args.MakeArgString("-" + FeatureName)); in AddTargetFeature()
1359 const ArgList &Args, in getMIPSTargetFeatures() argument
1363 mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName); in getMIPSTargetFeatures()
1366 AddTargetFeature(Args, Features, options::OPT_mno_abicalls, in getMIPSTargetFeatures()
1369 mips::FloatABI FloatABI = getMipsFloatABI(D, Args); in getMIPSTargetFeatures()
1377 if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) { in getMIPSTargetFeatures()
1398 AddTargetFeature(Args, Features, options::OPT_msingle_float, in getMIPSTargetFeatures()
1400 AddTargetFeature(Args, Features, options::OPT_mips16, options::OPT_mno_mips16, in getMIPSTargetFeatures()
1402 AddTargetFeature(Args, Features, options::OPT_mmicromips, in getMIPSTargetFeatures()
1404 AddTargetFeature(Args, Features, options::OPT_mdsp, options::OPT_mno_dsp, in getMIPSTargetFeatures()
1406 AddTargetFeature(Args, Features, options::OPT_mdspr2, options::OPT_mno_dspr2, in getMIPSTargetFeatures()
1408 AddTargetFeature(Args, Features, options::OPT_mmsa, options::OPT_mno_msa, in getMIPSTargetFeatures()
1414 if (Arg *A = Args.getLastArg(options::OPT_mfp32, options::OPT_mfpxx, in getMIPSTargetFeatures()
1417 Features.push_back(Args.MakeArgString("-fp64")); in getMIPSTargetFeatures()
1419 Features.push_back(Args.MakeArgString("+fpxx")); in getMIPSTargetFeatures()
1420 Features.push_back(Args.MakeArgString("+nooddspreg")); in getMIPSTargetFeatures()
1422 Features.push_back(Args.MakeArgString("+fp64")); in getMIPSTargetFeatures()
1423 } else if (mips::shouldUseFPXX(Args, Triple, CPUName, ABIName, FloatABI)) { in getMIPSTargetFeatures()
1424 Features.push_back(Args.MakeArgString("+fpxx")); in getMIPSTargetFeatures()
1425 Features.push_back(Args.MakeArgString("+nooddspreg")); in getMIPSTargetFeatures()
1427 Features.push_back(Args.MakeArgString("+fp64")); in getMIPSTargetFeatures()
1428 Features.push_back(Args.MakeArgString("+nooddspreg")); in getMIPSTargetFeatures()
1431 AddTargetFeature(Args, Features, options::OPT_mno_odd_spreg, in getMIPSTargetFeatures()
1435 void Clang::AddMIPSTargetArgs(const ArgList &Args, in AddMIPSTargetArgs() argument
1441 mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName); in AddMIPSTargetArgs()
1446 mips::FloatABI ABI = getMipsFloatABI(D, Args); in AddMIPSTargetArgs()
1459 if (Arg *A = Args.getLastArg(options::OPT_mxgot, options::OPT_mno_xgot)) { in AddMIPSTargetArgs()
1466 if (Arg *A = Args.getLastArg(options::OPT_mldc1_sdc1, in AddMIPSTargetArgs()
1474 if (Arg *A = Args.getLastArg(options::OPT_mcheck_zero_division, in AddMIPSTargetArgs()
1482 if (Arg *A = Args.getLastArg(options::OPT_G)) { in AddMIPSTargetArgs()
1485 CmdArgs.push_back(Args.MakeArgString("-mips-ssection-threshold=" + v)); in AddMIPSTargetArgs()
1489 if (Arg *A = Args.getLastArg(options::OPT_mcompact_branches_EQ)) { in AddMIPSTargetArgs()
1494 CmdArgs.push_back(Args.MakeArgString("-mips-compact-branches=" + Val)); in AddMIPSTargetArgs()
1504 static std::string getPPCTargetCPU(const ArgList &Args) { in getPPCTargetCPU() argument
1505 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { in getPPCTargetCPU()
1570 const ArgList &Args, in getPPCTargetFeatures() argument
1572 handleTargetFeaturesGroup(Args, Features, options::OPT_m_ppc_Features_Group); in getPPCTargetFeatures()
1574 ppc::FloatABI FloatABI = ppc::getPPCFloatABI(D, Args); in getPPCTargetFeatures()
1586 AddTargetFeature(Args, Features, options::OPT_faltivec, in getPPCTargetFeatures()
1590 ppc::FloatABI ppc::getPPCFloatABI(const Driver &D, const ArgList &Args) { in getPPCFloatABI() argument
1593 Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float, in getPPCFloatABI()
1605 D.Diag(diag::err_drv_invalid_mfloat_abi) << A->getAsString(Args); in getPPCFloatABI()
1619 void Clang::AddPPCTargetArgs(const ArgList &Args, in AddPPCTargetArgs() argument
1630 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) in AddPPCTargetArgs()
1632 HasQPX = Args.hasFlag(options::OPT_mqpx, options::OPT_mno_qpx, HasQPX); in AddPPCTargetArgs()
1648 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) in AddPPCTargetArgs()
1656 ppc::getPPCFloatABI(getToolChain().getDriver(), Args); in AddPPCTargetArgs()
1676 bool ppc::hasPPCAbiArg(const ArgList &Args, const char *Value) { in hasPPCAbiArg() argument
1677 Arg *A = Args.getLastArg(options::OPT_mabi_EQ); in hasPPCAbiArg()
1682 static std::string getR600TargetGPU(const ArgList &Args) { in getR600TargetGPU() argument
1683 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { in getR600TargetGPU()
1698 static std::string getLanaiTargetCPU(const ArgList &Args) { in getLanaiTargetCPU() argument
1699 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { in getLanaiTargetCPU()
1706 const ArgList &Args) { in getSparcFloatABI() argument
1709 Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float, in getSparcFloatABI()
1722 D.Diag(diag::err_drv_invalid_mfloat_abi) << A->getAsString(Args); in getSparcFloatABI()
1740 static void getSparcTargetFeatures(const Driver &D, const ArgList &Args, in getSparcTargetFeatures() argument
1742 sparc::FloatABI FloatABI = sparc::getSparcFloatABI(D, Args); in getSparcTargetFeatures()
1747 void Clang::AddSparcTargetArgs(const ArgList &Args, in AddSparcTargetArgs() argument
1750 sparc::getSparcFloatABI(getToolChain().getDriver(), Args); in AddSparcTargetArgs()
1765 void Clang::AddSystemZTargetArgs(const ArgList &Args, in AddSystemZTargetArgs() argument
1767 if (Args.hasFlag(options::OPT_mbackchain, options::OPT_mno_backchain, false)) in AddSystemZTargetArgs()
1771 static const char *getSystemZTargetCPU(const ArgList &Args) { in getSystemZTargetCPU() argument
1772 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) in getSystemZTargetCPU()
1777 static void getSystemZTargetFeatures(const ArgList &Args, in getSystemZTargetFeatures() argument
1780 if (Arg *A = Args.getLastArg(options::OPT_mhtm, options::OPT_mno_htm)) { in getSystemZTargetFeatures()
1787 if (Arg *A = Args.getLastArg(options::OPT_mvx, options::OPT_mno_vx)) { in getSystemZTargetFeatures()
1795 static const char *getX86TargetCPU(const ArgList &Args, in getX86TargetCPU() argument
1797 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) { in getX86TargetCPU()
1812 return Args.MakeArgString(CPU); in getX86TargetCPU()
1815 if (const Arg *A = Args.getLastArg(options::OPT__SLASH_arch)) { in getX86TargetCPU()
1880 static StringRef getWebAssemblyTargetCPU(const ArgList &Args) { in getWebAssemblyTargetCPU() argument
1882 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { in getWebAssemblyTargetCPU()
1898 static std::string getCPUName(const ArgList &Args, const llvm::Triple &T, in getCPUName() argument
1906 return getAArch64TargetCPU(Args); in getCPUName()
1913 getARMArchCPUFromArgs(Args, MArch, MCPU, FromAs); in getCPUName()
1922 mips::getMipsCPUAndABI(Args, T, CPUName, ABIName); in getCPUName()
1928 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) in getCPUName()
1935 std::string TargetCPUName = getPPCTargetCPU(Args); in getCPUName()
1953 if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) in getCPUName()
1959 return getX86TargetCPU(Args, T); in getCPUName()
1963 toolchains::HexagonToolChain::GetTargetCPUVersion(Args).str(); in getCPUName()
1966 return getLanaiTargetCPU(Args); in getCPUName()
1969 return getSystemZTargetCPU(Args); in getCPUName()
1973 return getR600TargetGPU(Args); in getCPUName()
1977 return getWebAssemblyTargetCPU(Args); in getCPUName()
1981 static void AddGoldPlugin(const ToolChain &ToolChain, const ArgList &Args, in AddGoldPlugin() argument
1989 CmdArgs.push_back(Args.MakeArgString(Plugin)); in AddGoldPlugin()
1995 std::string CPU = getCPUName(Args, ToolChain.getTriple()); in AddGoldPlugin()
1997 CmdArgs.push_back(Args.MakeArgString(Twine("-plugin-opt=mcpu=") + CPU)); in AddGoldPlugin()
1999 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) { in AddGoldPlugin()
2009 CmdArgs.push_back(Args.MakeArgString(Twine("-plugin-opt=O") + OOpt)); in AddGoldPlugin()
2016 if (Arg *A = Args.getLastArg(options::OPT_gTune_Group, in AddGoldPlugin()
2059 static void ParseMRecip(const Driver &D, const ArgList &Args, in ParseMRecip() argument
2066 Arg *A = Args.getLastArg(options::OPT_mrecip, options::OPT_mrecip_EQ); in ParseMRecip()
2073 OutStrings.push_back(Args.MakeArgString(Out + "all")); in ParseMRecip()
2085 OutStrings.push_back(Args.MakeArgString(Out + Val)); in ParseMRecip()
2150 Out = Args.MakeArgString(Out + Prefix + Val); in ParseMRecip()
2152 Out = Args.MakeArgString(Out + ","); in ParseMRecip()
2155 OutStrings.push_back(Args.MakeArgString(Out)); in ParseMRecip()
2159 const ArgList &Args, in getX86TargetFeatures() argument
2162 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) { in getX86TargetFeatures()
2168 Args.MakeArgString((F.second ? "+" : "-") + F.first())); in getX86TargetFeatures()
2194 if (Arg *A = Args.getLastArg(options::OPT__SLASH_arch)) { in getX86TargetFeatures()
2201 Features.push_back(Args.MakeArgString("+" + Arch.lower())); in getX86TargetFeatures()
2210 Features.push_back(Args.MakeArgString("+" + Arch.lower())); in getX86TargetFeatures()
2214 D.Diag(clang::diag::warn_drv_unused_argument) << A->getAsString(Args); in getX86TargetFeatures()
2219 handleTargetFeaturesGroup(Args, Features, options::OPT_m_x86_Features_Group); in getX86TargetFeatures()
2222 void Clang::AddX86TargetArgs(const ArgList &Args, in AddX86TargetArgs() argument
2224 if (!Args.hasFlag(options::OPT_mred_zone, options::OPT_mno_red_zone, true) || in AddX86TargetArgs()
2225 Args.hasArg(options::OPT_mkernel) || in AddX86TargetArgs()
2226 Args.hasArg(options::OPT_fapple_kext)) in AddX86TargetArgs()
2231 bool NoImplicitFloat = (Args.hasArg(options::OPT_mkernel) || in AddX86TargetArgs()
2232 Args.hasArg(options::OPT_fapple_kext)); in AddX86TargetArgs()
2233 if (Arg *A = Args.getLastArg( in AddX86TargetArgs()
2243 if (Arg *A = Args.getLastArg(options::OPT_masm_EQ)) { in AddX86TargetArgs()
2247 CmdArgs.push_back(Args.MakeArgString("-x86-asm-syntax=" + Value)); in AddX86TargetArgs()
2255 if (Args.hasFlag(options::OPT_miamcu, options::OPT_mno_iamcu, false)) { in AddX86TargetArgs()
2262 void Clang::AddHexagonTargetArgs(const ArgList &Args, in AddHexagonTargetArgs() argument
2267 if (auto G = toolchains::HexagonToolChain::getSmallDataThreshold(Args)) { in AddHexagonTargetArgs()
2271 CmdArgs.push_back(Args.MakeArgString(Opt)); in AddHexagonTargetArgs()
2274 if (!Args.hasArg(options::OPT_fno_short_enums)) in AddHexagonTargetArgs()
2276 if (Args.getLastArg(options::OPT_mieee_rnd_near)) { in AddHexagonTargetArgs()
2284 void Clang::AddLanaiTargetArgs(const ArgList &Args, in AddLanaiTargetArgs() argument
2286 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { in AddLanaiTargetArgs()
2290 CmdArgs.push_back(Args.MakeArgString(CPUName)); in AddLanaiTargetArgs()
2292 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) { in AddLanaiTargetArgs()
2307 void Clang::AddWebAssemblyTargetArgs(const ArgList &Args, in AddWebAssemblyTargetArgs() argument
2310 if (!Args.hasArg(options::OPT_fvisibility_EQ, in AddWebAssemblyTargetArgs()
2379 const ArgList &Args, in getAArch64ArchFeaturesFromMarch() argument
2402 const ArgList &Args, in getAArch64ArchFeaturesFromMcpu() argument
2414 const ArgList &Args, in getAArch64MicroArchFeaturesFromMtune() argument
2429 const ArgList &Args, in getAArch64MicroArchFeaturesFromMcpu() argument
2437 return getAArch64MicroArchFeaturesFromMtune(D, CPU, Args, Features); in getAArch64MicroArchFeaturesFromMcpu()
2440 static void getAArch64TargetFeatures(const Driver &D, const ArgList &Args, in getAArch64TargetFeatures() argument
2446 if ((A = Args.getLastArg(options::OPT_march_EQ))) in getAArch64TargetFeatures()
2447 success = getAArch64ArchFeaturesFromMarch(D, A->getValue(), Args, Features); in getAArch64TargetFeatures()
2448 else if ((A = Args.getLastArg(options::OPT_mcpu_EQ))) in getAArch64TargetFeatures()
2449 success = getAArch64ArchFeaturesFromMcpu(D, A->getValue(), Args, Features); in getAArch64TargetFeatures()
2450 else if (Args.hasArg(options::OPT_arch)) in getAArch64TargetFeatures()
2451 success = getAArch64ArchFeaturesFromMcpu(D, getAArch64TargetCPU(Args), Args, in getAArch64TargetFeatures()
2454 if (success && (A = Args.getLastArg(options::OPT_mtune_EQ))) in getAArch64TargetFeatures()
2456 getAArch64MicroArchFeaturesFromMtune(D, A->getValue(), Args, Features); in getAArch64TargetFeatures()
2457 else if (success && (A = Args.getLastArg(options::OPT_mcpu_EQ))) in getAArch64TargetFeatures()
2459 getAArch64MicroArchFeaturesFromMcpu(D, A->getValue(), Args, Features); in getAArch64TargetFeatures()
2460 else if (Args.hasArg(options::OPT_arch)) in getAArch64TargetFeatures()
2461 success = getAArch64MicroArchFeaturesFromMcpu(D, getAArch64TargetCPU(Args), in getAArch64TargetFeatures()
2462 Args, Features); in getAArch64TargetFeatures()
2465 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); in getAArch64TargetFeatures()
2467 if (Args.getLastArg(options::OPT_mgeneral_regs_only)) { in getAArch64TargetFeatures()
2474 if (Arg *A = Args.getLastArg(options::OPT_mcrc, options::OPT_mnocrc)) { in getAArch64TargetFeatures()
2481 if (Arg *A = Args.getLastArg(options::OPT_mno_unaligned_access, in getAArch64TargetFeatures()
2486 if (Args.hasArg(options::OPT_ffixed_x18)) in getAArch64TargetFeatures()
2490 static void getHexagonTargetFeatures(const ArgList &Args, in getHexagonTargetFeatures() argument
2497 for (auto &A : Args) { in getHexagonTargetFeatures()
2516 static void getWebAssemblyTargetFeatures(const ArgList &Args, in getWebAssemblyTargetFeatures() argument
2518 handleTargetFeaturesGroup(Args, Features, options::OPT_m_wasm_Features_Group); in getWebAssemblyTargetFeatures()
2521 static void getAMDGPUTargetFeatures(const Driver &D, const ArgList &Args, in getAMDGPUTargetFeatures() argument
2523 if (const Arg *dAbi = Args.getLastArg(options::OPT_mamdgpu_debugger_abi)) { in getAMDGPUTargetFeatures()
2530 D.Diag(diag::err_drv_clang_unsupported) << dAbi->getAsString(Args); in getAMDGPUTargetFeatures()
2535 Args, Features, options::OPT_m_amdgpu_Features_Group); in getAMDGPUTargetFeatures()
2539 const ArgList &Args, ArgStringList &CmdArgs, in getTargetFeatures() argument
2550 getMIPSTargetFeatures(D, Triple, Args, Features); in getTargetFeatures()
2557 getARMTargetFeatures(TC, Triple, Args, Features, ForAS); in getTargetFeatures()
2563 getPPCTargetFeatures(D, Triple, Args, Features); in getTargetFeatures()
2566 getSystemZTargetFeatures(Args, Features); in getTargetFeatures()
2570 getAArch64TargetFeatures(D, Args, Features); in getTargetFeatures()
2574 getX86TargetFeatures(D, Triple, Args, Features); in getTargetFeatures()
2577 getHexagonTargetFeatures(Args, Features); in getTargetFeatures()
2581 getWebAssemblyTargetFeatures(Args, Features); in getTargetFeatures()
2586 getSparcTargetFeatures(D, Args, Features); in getTargetFeatures()
2590 getAMDGPUTargetFeatures(D, Args, Features); in getTargetFeatures()
2637 static void addExceptionArgs(const ArgList &Args, types::ID InputType, in addExceptionArgs() argument
2647 Args.ClaimAllArgs(options::OPT_fexceptions); in addExceptionArgs()
2648 Args.ClaimAllArgs(options::OPT_fno_exceptions); in addExceptionArgs()
2649 Args.ClaimAllArgs(options::OPT_fobjc_exceptions); in addExceptionArgs()
2650 Args.ClaimAllArgs(options::OPT_fno_objc_exceptions); in addExceptionArgs()
2651 Args.ClaimAllArgs(options::OPT_fcxx_exceptions); in addExceptionArgs()
2652 Args.ClaimAllArgs(options::OPT_fno_cxx_exceptions); in addExceptionArgs()
2657 bool EH = Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions, in addExceptionArgs()
2663 Args.hasFlag(options::OPT_fobjc_exceptions, in addExceptionArgs()
2674 Arg *ExceptionArg = Args.getLastArg( in addExceptionArgs()
2692 << RTTIArg->getAsString(Args) << ExceptionArg->getAsString(Args); in addExceptionArgs()
2708 static bool ShouldDisableAutolink(const ArgList &Args, const ToolChain &TC) { in ShouldDisableAutolink() argument
2715 return !Args.hasFlag(options::OPT_fautolink, options::OPT_fno_autolink, in ShouldDisableAutolink()
2719 static bool ShouldDisableDwarfDirectory(const ArgList &Args, in ShouldDisableDwarfDirectory() argument
2722 Args.hasFlag(options::OPT_fdwarf_directory_asm, in ShouldDisableDwarfDirectory()
2741 static bool UseRelaxAll(Compilation &C, const ArgList &Args) { in UseRelaxAll() argument
2744 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) in UseRelaxAll()
2757 return Args.hasFlag(options::OPT_mrelax_all, options::OPT_mno_relax_all, in UseRelaxAll()
2787 static void RenderDebugEnablingArgs(const ArgList &Args, ArgStringList &CmdArgs, in RenderDebugEnablingArgs() argument
2806 Args.MakeArgString("-dwarf-version=" + Twine(DwarfVersion))); in RenderDebugEnablingArgs()
2823 const ArgList &Args, in CollectArgsForIntegratedAssembler() argument
2826 if (UseRelaxAll(C, Args)) in CollectArgsForIntegratedAssembler()
2833 if (Args.hasFlag(options::OPT_mincremental_linker_compatible, in CollectArgsForIntegratedAssembler()
2852 Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) { in CollectArgsForIntegratedAssembler()
2943 RenderDebugEnablingArgs(Args, CmdArgs, in CollectArgsForIntegratedAssembler()
2973 static void addClangRT(const ToolChain &TC, const ArgList &Args, in addClangRT() argument
2975 CmdArgs.push_back(TC.getCompilerRTArgString(Args, "builtins")); in addClangRT()
3002 const ArgList &Args) { in getOpenMPRuntime() argument
3005 const Arg *A = Args.getLastArg(options::OPT_fopenmp_EQ); in getOpenMPRuntime()
3028 const ArgList &Args) { in addOpenMPRuntime() argument
3029 if (!Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ, in addOpenMPRuntime()
3033 switch (getOpenMPRuntime(TC, Args)) { in addOpenMPRuntime()
3049 static void addSanitizerRuntime(const ToolChain &TC, const ArgList &Args, in addSanitizerRuntime() argument
3055 CmdArgs.push_back(TC.getCompilerRTArgString(Args, Sanitizer, IsShared)); in addSanitizerRuntime()
3061 static bool addSanitizerDynamicList(const ToolChain &TC, const ArgList &Args, in addSanitizerDynamicList() argument
3064 SmallString<128> SanRT(TC.getCompilerRT(Args, Sanitizer)); in addSanitizerDynamicList()
3066 CmdArgs.push_back(Args.MakeArgString("--dynamic-list=" + SanRT + ".syms")); in addSanitizerDynamicList()
3086 collectSanitizerRuntimes(const ToolChain &TC, const ArgList &Args, in collectSanitizerRuntimes() argument
3102 if (Args.hasArg(options::OPT_shared) || TC.getTriple().isAndroid()) { in collectSanitizerRuntimes()
3153 static bool addSanitizerRuntimes(const ToolChain &TC, const ArgList &Args, in addSanitizerRuntimes() argument
3157 collectSanitizerRuntimes(TC, Args, SharedRuntimes, StaticRuntimes, in addSanitizerRuntimes()
3161 addSanitizerRuntime(TC, Args, CmdArgs, RT, true, false); in addSanitizerRuntimes()
3163 addSanitizerRuntime(TC, Args, CmdArgs, RT, false, true); in addSanitizerRuntimes()
3166 addSanitizerRuntime(TC, Args, CmdArgs, RT, false, true); in addSanitizerRuntimes()
3167 AddExportDynamic |= !addSanitizerDynamicList(TC, Args, CmdArgs, RT); in addSanitizerRuntimes()
3170 addSanitizerRuntime(TC, Args, CmdArgs, RT, false, false); in addSanitizerRuntimes()
3171 AddExportDynamic |= !addSanitizerDynamicList(TC, Args, CmdArgs, RT); in addSanitizerRuntimes()
3175 CmdArgs.push_back(Args.MakeArgString(S)); in addSanitizerRuntimes()
3184 static bool addXRayRuntime(const ToolChain &TC, const ArgList &Args, in addXRayRuntime() argument
3186 if (Args.hasFlag(options::OPT_fxray_instrument, in addXRayRuntime()
3189 CmdArgs.push_back(TC.getCompilerRTArgString(Args, "xray", false)); in addXRayRuntime()
3196 static void linkXRayRuntimeDeps(const ToolChain &TC, const ArgList &Args, in linkXRayRuntimeDeps() argument
3203 if (TC.GetCXXStdlibType(Args) == ToolChain::CST_Libcxx) in linkXRayRuntimeDeps()
3211 static bool areOptimizationsEnabled(const ArgList &Args) { in areOptimizationsEnabled() argument
3213 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) in areOptimizationsEnabled()
3219 static bool shouldUseFramePointerForTarget(const ArgList &Args, in shouldUseFramePointerForTarget() argument
3242 return !areOptimizationsEnabled(Args); in shouldUseFramePointerForTarget()
3251 return !areOptimizationsEnabled(Args); in shouldUseFramePointerForTarget()
3268 static bool shouldUseFramePointer(const ArgList &Args, in shouldUseFramePointer() argument
3270 if (Arg *A = Args.getLastArg(options::OPT_fno_omit_frame_pointer, in shouldUseFramePointer()
3273 if (Args.hasArg(options::OPT_pg)) in shouldUseFramePointer()
3276 return shouldUseFramePointerForTarget(Args, Triple); in shouldUseFramePointer()
3279 static bool shouldUseLeafFramePointer(const ArgList &Args, in shouldUseLeafFramePointer() argument
3281 if (Arg *A = Args.getLastArg(options::OPT_mno_omit_leaf_frame_pointer, in shouldUseLeafFramePointer()
3284 if (Args.hasArg(options::OPT_pg)) in shouldUseLeafFramePointer()
3290 return shouldUseFramePointerForTarget(Args, Triple); in shouldUseLeafFramePointer()
3294 static void addDebugCompDirArg(const ArgList &Args, ArgStringList &CmdArgs) { in addDebugCompDirArg() argument
3298 CmdArgs.push_back(Args.MakeArgString(cwd)); in addDebugCompDirArg()
3302 static const char *SplitDebugName(const ArgList &Args, const InputInfo &Input) { in SplitDebugName() argument
3303 Arg *FinalOutput = Args.getLastArg(options::OPT_o); in SplitDebugName()
3304 if (FinalOutput && Args.hasArg(options::OPT_c)) { in SplitDebugName()
3307 return Args.MakeArgString(T); in SplitDebugName()
3311 Args.getLastArgValue(options::OPT_fdebug_compilation_dir)); in SplitDebugName()
3315 return Args.MakeArgString(F); in SplitDebugName()
3320 const JobAction &JA, const ArgList &Args, in SplitDebugInfo() argument
3333 const char *Exec = Args.MakeArgString(TC.GetProgramPath("objcopy")); in SplitDebugInfo()
3345 static bool shouldEnableVectorizerAtOLevel(const ArgList &Args, bool isSlpVec) { in shouldEnableVectorizerAtOLevel() argument
3346 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) { in shouldEnableVectorizerAtOLevel()
3376 static void addDashXForInput(const ArgList &Args, const InputInfo &Input, in addDashXForInput() argument
3380 if (Args.hasArg(options::OPT_verify_pch) && Input.getType() == types::TY_PCH) in addDashXForInput()
3384 if (Args.hasArg(options::OPT_rewrite_objc)) in addDashXForInput()
3406 static void claimNoWarnArgs(const ArgList &Args) { in claimNoWarnArgs() argument
3409 Args.ClaimAllArgs(options::OPT_flto_EQ); in claimNoWarnArgs()
3410 Args.ClaimAllArgs(options::OPT_flto); in claimNoWarnArgs()
3411 Args.ClaimAllArgs(options::OPT_fno_lto); in claimNoWarnArgs()
3448 const llvm::opt::ArgList &Args, in getMSVCVersion() argument
3450 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions, in getMSVCVersion()
3452 Args.hasArg(options::OPT_fmsc_version) || in getMSVCVersion()
3453 Args.hasArg(options::OPT_fms_compatibility_version)) { in getMSVCVersion()
3454 const Arg *MSCVersion = Args.getLastArg(options::OPT_fmsc_version); in getMSVCVersion()
3456 Args.getLastArg(options::OPT_fms_compatibility_version); in getMSVCVersion()
3461 << MSCVersion->getAsString(Args) in getMSVCVersion()
3462 << MSCompatibilityVersion->getAsString(Args); in getMSVCVersion()
3470 << MSCompatibilityVersion->getAsString(Args) in getMSVCVersion()
3478 D->Diag(diag::err_drv_invalid_value) << MSCVersion->getAsString(Args) in getMSVCVersion()
3501 const InputInfo &Output, const ArgList &Args, in addPGOAndCoverageFlags() argument
3503 auto *ProfileGenerateArg = Args.getLastArg( in addPGOAndCoverageFlags()
3513 auto *ProfileUseArg = Args.getLastArg( in addPGOAndCoverageFlags()
3528 CmdArgs.push_back(Args.MakeArgString(Twine("-fprofile-instrument-path=") + in addPGOAndCoverageFlags()
3535 Args.MakeArgString(Twine("-fprofile-instrument-path=") + Path)); in addPGOAndCoverageFlags()
3543 CmdArgs.push_back(Args.MakeArgString( in addPGOAndCoverageFlags()
3554 Args.MakeArgString(Twine("-fprofile-instrument-use-path=") + Path)); in addPGOAndCoverageFlags()
3558 if (Args.hasArg(options::OPT_ftest_coverage) || in addPGOAndCoverageFlags()
3559 Args.hasArg(options::OPT_coverage)) in addPGOAndCoverageFlags()
3561 if (Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs, in addPGOAndCoverageFlags()
3563 Args.hasArg(options::OPT_coverage)) in addPGOAndCoverageFlags()
3566 if (Args.hasFlag(options::OPT_fcoverage_mapping, in addPGOAndCoverageFlags()
3573 if (Args.hasFlag(options::OPT_fcoverage_mapping, in addPGOAndCoverageFlags()
3594 CmdArgs.push_back(Args.MakeArgString(CoverageFilename)); in addPGOAndCoverageFlags()
3599 static void addPS4ProfileRTArgs(const ToolChain &TC, const ArgList &Args, in addPS4ProfileRTArgs() argument
3601 if ((Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs, in addPS4ProfileRTArgs()
3603 Args.hasFlag(options::OPT_fprofile_generate, in addPS4ProfileRTArgs()
3605 Args.hasFlag(options::OPT_fprofile_generate_EQ, in addPS4ProfileRTArgs()
3607 Args.hasFlag(options::OPT_fprofile_instr_generate, in addPS4ProfileRTArgs()
3609 Args.hasFlag(options::OPT_fprofile_instr_generate_EQ, in addPS4ProfileRTArgs()
3611 Args.hasArg(options::OPT_fcreate_profile) || in addPS4ProfileRTArgs()
3612 Args.hasArg(options::OPT_coverage))) in addPS4ProfileRTArgs()
3622 const ArgList &Args) { in ParsePICArgs() argument
3629 Args.hasArg(options::OPT_static)) in ParsePICArgs()
3634 Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext); in ParsePICArgs()
3688 Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC, in ParsePICArgs()
3707 Arg *ModelArg = Args.getLastArg(options::OPT_mcmodel_EQ); in ParsePICArgs()
3731 if (Arg *A = Args.getLastArg(options::OPT_mdynamic_no_pic)) { in ParsePICArgs()
3766 static void AddAssemblerKPIC(const ToolChain &ToolChain, const ArgList &Args, in AddAssemblerKPIC() argument
3772 ParsePICArgs(ToolChain, ToolChain.getTriple(), Args); in AddAssemblerKPIC()
3780 const ArgList &Args, const char *LinkingOutput) const { in ConstructJob() argument
3781 std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args); in ConstructJob()
3785 Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext); in ConstructJob()
3816 CmdArgs.push_back(Args.MakeArgString(TripleStr)); in ConstructJob()
3832 CmdArgs.push_back(Args.MakeArgString(AuxToolChain->getTriple().str())); in ConstructJob()
3863 if (Args.hasArg(options::OPT_rewrite_objc) && in ConstructJob()
3864 !Args.hasArg(options::OPT_g_Group)) in ConstructJob()
3870 CollectArgsForIntegratedAssembler(C, Args, CmdArgs, D); in ConstructJob()
3873 (void)Args.hasArg(options::OPT_force__cpusubtype__ALL); in ConstructJob()
3921 Args.AddLastArg(CmdArgs, options::OPT_flto, options::OPT_flto_EQ); in ConstructJob()
3924 if (const Arg *A = Args.getLastArg(options::OPT_fthinlto_index_EQ)) { in ConstructJob()
3926 D.Diag(diag::err_drv_argument_only_allowed_with) << A->getAsString(Args) in ConstructJob()
3928 Args.AddLastArg(CmdArgs, options::OPT_fthinlto_index_EQ); in ConstructJob()
3935 Args.AddLastArg(CmdArgs, options::OPT_fembed_bitcode_EQ); in ConstructJob()
3958 CmdArgs.push_back(getBaseInputName(Args, Input)); in ConstructJob()
3962 if (Args.hasArg(options::OPT_static)) in ConstructJob()
3975 if (!Args.hasArg(options::OPT__analyzer_no_default_checks)) { in ConstructJob()
4023 if (Arg *A = Args.getLastArg(options::OPT__analyzer_output)) in ConstructJob()
4034 Args.AddAllArgValues(CmdArgs, options::OPT_Xanalyzer); in ConstructJob()
4037 CheckCodeGenerationOptions(D, Args); in ConstructJob()
4043 ParsePICArgs(getToolChain(), Triple, Args); in ConstructJob()
4057 if (Arg *A = Args.getLastArg(options::OPT_meabi)) { in ConstructJob()
4063 if (Arg *A = Args.getLastArg(options::OPT_mthread_model)) in ConstructJob()
4066 CmdArgs.push_back(Args.MakeArgString(getToolChain().getThreadModel())); in ConstructJob()
4068 Args.AddLastArg(CmdArgs, options::OPT_fveclib); in ConstructJob()
4070 if (!Args.hasFlag(options::OPT_fmerge_all_constants, in ConstructJob()
4076 if (Args.hasArg(options::OPT_frewrite_map_file) || in ConstructJob()
4077 Args.hasArg(options::OPT_frewrite_map_file_EQ)) { in ConstructJob()
4078 for (const Arg *A : Args.filtered(options::OPT_frewrite_map_file, in ConstructJob()
4086 if (Arg *A = Args.getLastArg(options::OPT_Wframe_larger_than_EQ)) { in ConstructJob()
4089 CmdArgs.push_back(Args.MakeArgString("-warn-stack-size=" + v)); in ConstructJob()
4093 if (!Args.hasFlag(options::OPT_fjump_tables, options::OPT_fno_jump_tables, in ConstructJob()
4097 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) { in ConstructJob()
4102 if (Arg *A = Args.getLastArg(options::OPT_fpcc_struct_return, in ConstructJob()
4115 if (Args.hasFlag(options::OPT_mrtd, options::OPT_mno_rtd, false)) in ConstructJob()
4118 if (shouldUseFramePointer(Args, getToolChain().getTriple())) in ConstructJob()
4120 if (!Args.hasFlag(options::OPT_fzero_initialized_in_bss, in ConstructJob()
4124 bool OFastEnabled = isOptimizationLevelFast(Args); in ConstructJob()
4132 if (!Args.hasFlag(options::OPT_fstrict_aliasing, StrictAliasingAliasOption, in ConstructJob()
4135 if (!Args.hasFlag(options::OPT_fstruct_path_tbaa, in ConstructJob()
4138 if (Args.hasFlag(options::OPT_fstrict_enums, options::OPT_fno_strict_enums, in ConstructJob()
4141 if (Args.hasFlag(options::OPT_fstrict_vtable_pointers, in ConstructJob()
4145 if (!Args.hasFlag(options::OPT_foptimize_sibling_calls, in ConstructJob()
4150 if (Args.hasArg(options::OPT_fsplit_stack)) in ConstructJob()
4163 if (Arg *A = Args.getLastArg( in ConstructJob()
4172 if (Arg *A = Args.getLastArg( in ConstructJob()
4185 Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption, in ConstructJob()
4206 if (Arg *A = Args.getLastArg( in ConstructJob()
4216 if (Arg *A = Args.getLastArg( in ConstructJob()
4226 if (Arg *A = Args.getLastArg( in ConstructJob()
4236 if (Arg *A = Args.getLastArg( in ConstructJob()
4256 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption, in ConstructJob()
4262 CmdArgs.push_back(Args.MakeArgString("-ffp-contract=" + Val)); in ConstructJob()
4270 CmdArgs.push_back(Args.MakeArgString("-ffp-contract=fast")); in ConstructJob()
4274 ParseMRecip(getToolChain().getDriver(), Args, CmdArgs); in ConstructJob()
4281 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption, in ConstructJob()
4285 if (Arg *A = Args.getLastArg(options::OPT_ffinite_math_only, in ConstructJob()
4294 if (Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm, in ConstructJob()
4296 Args.hasArg(options::OPT_dA)) in ConstructJob()
4299 if (!Args.hasFlag(options::OPT_fintegrated_as, options::OPT_fno_integrated_as, in ConstructJob()
4303 if (Args.hasArg(options::OPT_fdebug_pass_structure)) { in ConstructJob()
4307 if (Args.hasArg(options::OPT_fdebug_pass_arguments)) { in ConstructJob()
4324 if (Args.hasFlag(options::OPT_mms_bitfields, options::OPT_mno_ms_bitfields, in ConstructJob()
4333 Args.hasFlag(options::OPT_fasynchronous_unwind_tables, in ConstructJob()
4338 if (Args.hasFlag(options::OPT_funwind_tables, options::OPT_fno_unwind_tables, in ConstructJob()
4342 getToolChain().addClangTargetOptions(Args, CmdArgs); in ConstructJob()
4344 if (Arg *A = Args.getLastArg(options::OPT_flimited_precision_EQ)) { in ConstructJob()
4350 (void)Args.hasArg(options::OPT_mtune_EQ); in ConstructJob()
4352 if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { in ConstructJob()
4358 std::string CPU = getCPUName(Args, Triple, /*FromAs*/ false); in ConstructJob()
4361 CmdArgs.push_back(Args.MakeArgString(CPU)); in ConstructJob()
4364 if (const Arg *A = Args.getLastArg(options::OPT_mfpmath_EQ)) { in ConstructJob()
4370 getTargetFeatures(getToolChain(), Triple, Args, CmdArgs, false); in ConstructJob()
4382 AddARMTargetArgs(Triple, Args, CmdArgs, KernelOrKext); in ConstructJob()
4387 AddAArch64TargetArgs(Args, CmdArgs); in ConstructJob()
4394 AddMIPSTargetArgs(Args, CmdArgs); in ConstructJob()
4400 AddPPCTargetArgs(Args, CmdArgs); in ConstructJob()
4406 AddSparcTargetArgs(Args, CmdArgs); in ConstructJob()
4410 AddSystemZTargetArgs(Args, CmdArgs); in ConstructJob()
4415 AddX86TargetArgs(Args, CmdArgs); in ConstructJob()
4419 AddLanaiTargetArgs(Args, CmdArgs); in ConstructJob()
4423 AddHexagonTargetArgs(Args, CmdArgs); in ConstructJob()
4428 AddWebAssemblyTargetArgs(Args, CmdArgs); in ConstructJob()
4450 AddClangCLArgs(Args, InputType, CmdArgs, &DebugInfoKind, &EmitCodeView); in ConstructJob()
4453 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) { in ConstructJob()
4458 if (!shouldUseLeafFramePointer(Args, getToolChain().getTriple())) in ConstructJob()
4463 if (!Args.hasArg(options::OPT_fallow_unsupported)) { in ConstructJob()
4467 if ((Unsupported = Args.getLastArg(options::OPT_fapple_kext)) || in ConstructJob()
4468 (Unsupported = Args.getLastArg(options::OPT_mkernel))) in ConstructJob()
4474 Args.AddAllArgs(CmdArgs, options::OPT_v); in ConstructJob()
4475 Args.AddLastArg(CmdArgs, options::OPT_H); in ConstructJob()
4481 Args.AddLastArg(CmdArgs, options::OPT_P); in ConstructJob()
4482 Args.AddLastArg(CmdArgs, options::OPT_print_ivar_layout); in ConstructJob()
4490 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
4491 Arg *SplitDwarfArg = Args.getLastArg(options::OPT_gsplit_dwarf); in ConstructJob()
4492 if (Arg *A = Args.getLastArg(options::OPT_g_Group)) { in ConstructJob()
4508 if (Arg *A = Args.getLastArg(options::OPT_gTune_Group, in ConstructJob()
4519 if (Arg *A = Args.getLastArg(options::OPT_gdwarf_2, options::OPT_gdwarf_3, in ConstructJob()
4525 if (Args.hasArg(options::OPT_gcodeview) || EmitCodeView) { in ConstructJob()
4534 Args.ClaimAllArgs(options::OPT_g_flags_Group); in ConstructJob()
4537 if (Args.hasFlag(options::OPT_gcolumn_info, options::OPT_gno_column_info, in ConstructJob()
4542 if (Args.hasArg(options::OPT_gmodules)) { in ConstructJob()
4562 bool NeedFullDebug = Args.hasFlag(options::OPT_fstandalone_debug, in ConstructJob()
4567 RenderDebugEnablingArgs(Args, CmdArgs, DebugInfoKind, DwarfVersion, in ConstructJob()
4571 if (Args.hasArg(options::OPT_ggnu_pubnames)) { in ConstructJob()
4579 if (Args.hasArg(options::OPT_gdwarf_aranges) || IsPS4CPU) { in ConstructJob()
4584 if (Args.hasFlag(options::OPT_fdebug_types_section, in ConstructJob()
4596 if (Args.hasFlag(options::OPT_ffunction_sections, in ConstructJob()
4601 if (Args.hasFlag(options::OPT_fdata_sections, options::OPT_fno_data_sections, in ConstructJob()
4606 if (!Args.hasFlag(options::OPT_funique_section_names, in ConstructJob()
4610 Args.AddAllArgs(CmdArgs, options::OPT_finstrument_functions); in ConstructJob()
4612 if (Args.hasFlag(options::OPT_fxray_instrument, in ConstructJob()
4615 if (Arg *A = Args.getLastArg(options::OPT_fxray_instruction_threshold_, in ConstructJob()
4622 if (Args.hasFlag(options::OPT_fxray_instrument, in ConstructJob()
4626 Args.getLastArg(options::OPT_fxray_instruction_threshold_, in ConstructJob()
4633 addPGOAndCoverageFlags(C, D, Output, Args, CmdArgs); in ConstructJob()
4637 addPS4ProfileRTArgs(getToolChain(), Args, CmdArgs); in ConstructJob()
4640 if (Args.hasArg(options::OPT_nostdinc)) { in ConstructJob()
4644 if (Args.hasArg(options::OPT_nostdlibinc)) in ConstructJob()
4646 Args.AddLastArg(CmdArgs, options::OPT_nostdincxx); in ConstructJob()
4647 Args.AddLastArg(CmdArgs, options::OPT_nobuiltininc); in ConstructJob()
4654 Args.AddLastArg(CmdArgs, options::OPT_working_directory); in ConstructJob()
4657 if (!Args.hasArg(options::OPT_fno_objc_arc, options::OPT_fobjc_arc)) { in ConstructJob()
4658 if (const Arg *A = Args.getLastArg(options::OPT_ccc_arcmt_check, in ConstructJob()
4676 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_report_output); in ConstructJob()
4677 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_emit_arc_errors); in ConstructJob()
4682 Args.ClaimAllArgs(options::OPT_ccc_arcmt_check); in ConstructJob()
4683 Args.ClaimAllArgs(options::OPT_ccc_arcmt_modify); in ConstructJob()
4684 Args.ClaimAllArgs(options::OPT_ccc_arcmt_migrate); in ConstructJob()
4687 if (const Arg *A = Args.getLastArg(options::OPT_ccc_objcmt_migrate)) { in ConstructJob()
4689 D.Diag(diag::err_drv_argument_not_allowed_with) << A->getAsString(Args) in ConstructJob()
4695 if (!Args.hasArg(options::OPT_objcmt_migrate_literals, in ConstructJob()
4703 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals); in ConstructJob()
4704 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting); in ConstructJob()
4705 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property); in ConstructJob()
4708 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals); in ConstructJob()
4709 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting); in ConstructJob()
4710 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property); in ConstructJob()
4711 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_all); in ConstructJob()
4712 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readonly_property); in ConstructJob()
4713 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readwrite_property); in ConstructJob()
4714 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property_dot_syntax); in ConstructJob()
4715 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_annotation); in ConstructJob()
4716 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_instancetype); in ConstructJob()
4717 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_nsmacros); in ConstructJob()
4718 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_protocol_conformance); in ConstructJob()
4719 Args.AddLastArg(CmdArgs, options::OPT_objcmt_atomic_property); in ConstructJob()
4720 Args.AddLastArg(CmdArgs, options::OPT_objcmt_returns_innerpointer_property); in ConstructJob()
4721 Args.AddLastArg(CmdArgs, options::OPT_objcmt_ns_nonatomic_iosonly); in ConstructJob()
4722 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_designated_init); in ConstructJob()
4723 Args.AddLastArg(CmdArgs, options::OPT_objcmt_whitelist_dir_path); in ConstructJob()
4731 AddPreprocessingOptions(C, JA, D, Args, CmdArgs, Output, Inputs, in ConstructJob()
4738 Args.ClaimAllArgs(options::OPT_D); in ConstructJob()
4741 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) { in ConstructJob()
4746 A->render(Args, CmdArgs); in ConstructJob()
4752 Args.filtered(options::OPT_clang_ignored_gcc_optimization_f_Group)) { in ConstructJob()
4753 D.Diag(diag::warn_ignored_gcc_optimization) << A->getAsString(Args); in ConstructJob()
4757 claimNoWarnArgs(Args); in ConstructJob()
4759 Args.AddAllArgs(CmdArgs, options::OPT_R_Group); in ConstructJob()
4760 Args.AddAllArgs(CmdArgs, options::OPT_W_Group); in ConstructJob()
4761 if (Args.hasFlag(options::OPT_pedantic, options::OPT_no_pedantic, false)) in ConstructJob()
4763 Args.AddLastArg(CmdArgs, options::OPT_pedantic_errors); in ConstructJob()
4764 Args.AddLastArg(CmdArgs, options::OPT_w); in ConstructJob()
4772 if (Arg *Std = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi)) { in ConstructJob()
4779 Std->render(Args, CmdArgs); in ConstructJob()
4782 if (Arg *A = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi, in ConstructJob()
4786 A->render(Args, CmdArgs); in ConstructJob()
4795 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ, "-std=", in ConstructJob()
4800 Args.AddLastArg(CmdArgs, options::OPT_ftrigraphs, in ConstructJob()
4817 Args.getLastArg(options::OPT_Wwrite_strings, in ConstructJob()
4828 Args.hasFlag(options::OPT_Wdeprecated, options::OPT_Wno_deprecated, in ConstructJob()
4834 if (Arg *Asm = Args.getLastArg(options::OPT_fasm, options::OPT_fno_asm)) { in ConstructJob()
4841 if (ShouldDisableDwarfDirectory(Args, getToolChain())) in ConstructJob()
4844 if (ShouldDisableAutolink(Args, getToolChain())) in ConstructJob()
4848 addDebugCompDirArg(Args, CmdArgs); in ConstructJob()
4850 for (const Arg *A : Args.filtered(options::OPT_fdebug_prefix_map_EQ)) { in ConstructJob()
4855 CmdArgs.push_back(Args.MakeArgString("-fdebug-prefix-map=" + Map)); in ConstructJob()
4859 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_depth_, in ConstructJob()
4865 if (Arg *A = Args.getLastArg(options::OPT_foperator_arrow_depth_EQ)) { in ConstructJob()
4870 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_depth_EQ)) { in ConstructJob()
4875 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_steps_EQ)) { in ConstructJob()
4880 if (Arg *A = Args.getLastArg(options::OPT_fbracket_depth_EQ)) { in ConstructJob()
4885 if (Arg *A = Args.getLastArg(options::OPT_Wlarge_by_value_copy_EQ, in ConstructJob()
4889 CmdArgs.push_back(Args.MakeArgString("-Wlarge-by-value-copy=" + bytes)); in ConstructJob()
4894 if (Args.hasArg(options::OPT_relocatable_pch)) in ConstructJob()
4897 if (Arg *A = Args.getLastArg(options::OPT_fconstant_string_class_EQ)) { in ConstructJob()
4902 if (Arg *A = Args.getLastArg(options::OPT_ftabstop_EQ)) { in ConstructJob()
4908 if (Arg *A = Args.getLastArg(options::OPT_ferror_limit_EQ)) in ConstructJob()
4913 if (Arg *A = Args.getLastArg(options::OPT_fmacro_backtrace_limit_EQ)) { in ConstructJob()
4918 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_backtrace_limit_EQ)) { in ConstructJob()
4923 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_backtrace_limit_EQ)) { in ConstructJob()
4928 if (Arg *A = Args.getLastArg(options::OPT_fspell_checking_limit_EQ)) { in ConstructJob()
4935 if (Arg *A = Args.getLastArg(options::OPT_fmessage_length_EQ)) { in ConstructJob()
4941 CmdArgs.push_back(Args.MakeArgString(Twine(N))); in ConstructJob()
4945 if (const Arg *A = Args.getLastArg(options::OPT_fvisibility_EQ, in ConstructJob()
4959 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_inlines_hidden); in ConstructJob()
4961 Args.AddLastArg(CmdArgs, options::OPT_ftlsmodel_EQ); in ConstructJob()
4964 if (Args.hasFlag(options::OPT_ffreestanding, options::OPT_fhosted, false) || in ConstructJob()
4969 Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls); in ConstructJob()
4970 Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions); in ConstructJob()
4971 Args.AddLastArg(CmdArgs, options::OPT_fno_operator_names); in ConstructJob()
4975 if (Args.hasFlag(options::OPT_femulated_tls, options::OPT_fno_emulated_tls, in ConstructJob()
4980 Args.AddLastArg(CmdArgs, options::OPT_faltivec); in ConstructJob()
4981 Args.AddLastArg(CmdArgs, options::OPT_fzvector); in ConstructJob()
4983 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_show_template_tree); in ConstructJob()
4984 Args.AddLastArg(CmdArgs, options::OPT_fno_elide_type); in ConstructJob()
4987 if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ, in ConstructJob()
4989 switch (getOpenMPRuntime(getToolChain(), Args)) { in ConstructJob()
4998 if (!Args.hasFlag(options::OPT_fopenmp_use_tls, in ConstructJob()
5001 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_version_EQ); in ConstructJob()
5015 Sanitize.addArgs(getToolChain(), Args, CmdArgs, InputType); in ConstructJob()
5018 if (const Arg *A = Args.getLastArg(options::OPT_faltivec)) { in ConstructJob()
5022 D.Diag(diag::err_drv_argument_only_allowed_with) << A->getAsString(Args) in ConstructJob()
5027 if (Arg *A = Args.getLastArg(options::OPT_fzvector)) in ConstructJob()
5028 if (Args.hasArg(options::OPT_faltivec)) in ConstructJob()
5029 D.Diag(diag::err_drv_argument_not_allowed_with) << A->getAsString(Args) in ConstructJob()
5033 Args.AddLastArg(CmdArgs, options::OPT_pg); in ConstructJob()
5036 if (!Args.hasFlag(options::OPT_flax_vector_conversions, in ConstructJob()
5040 if (Args.getLastArg(options::OPT_fapple_kext) || in ConstructJob()
5041 (Args.hasArg(options::OPT_mkernel) && types::isCXX(InputType))) in ConstructJob()
5044 Args.AddLastArg(CmdArgs, options::OPT_fobjc_sender_dependent_dispatch); in ConstructJob()
5045 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info); in ConstructJob()
5046 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_parseable_fixits); in ConstructJob()
5047 Args.AddLastArg(CmdArgs, options::OPT_ftime_report); in ConstructJob()
5048 Args.AddLastArg(CmdArgs, options::OPT_ftrapv); in ConstructJob()
5050 if (Arg *A = Args.getLastArg(options::OPT_ftrapv_handler_EQ)) { in ConstructJob()
5055 Args.AddLastArg(CmdArgs, options::OPT_ftrap_function_EQ); in ConstructJob()
5059 if (Arg *A = Args.getLastArg(options::OPT_fwrapv, options::OPT_fno_wrapv)) { in ConstructJob()
5062 } else if (Arg *A = Args.getLastArg(options::OPT_fstrict_overflow, in ConstructJob()
5068 if (Arg *A = Args.getLastArg(options::OPT_freroll_loops, in ConstructJob()
5073 Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings); in ConstructJob()
5074 Args.AddLastArg(CmdArgs, options::OPT_funroll_loops, in ConstructJob()
5077 Args.AddLastArg(CmdArgs, options::OPT_pthread); in ConstructJob()
5081 if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector, in ConstructJob()
5099 CmdArgs.push_back(Args.MakeArgString(Twine(StackProtectorLevel))); in ConstructJob()
5103 for (const Arg *A : Args.filtered(options::OPT__param)) { in ConstructJob()
5109 CmdArgs.push_back(Args.MakeArgString(Str.drop_front(16))); in ConstructJob()
5116 if (Args.hasFlag(options::OPT_mstackrealign, options::OPT_mno_stackrealign, in ConstructJob()
5118 CmdArgs.push_back(Args.MakeArgString("-mstackrealign")); in ConstructJob()
5120 if (Args.hasArg(options::OPT_mstack_alignment)) { in ConstructJob()
5121 StringRef alignment = Args.getLastArgValue(options::OPT_mstack_alignment); in ConstructJob()
5122 CmdArgs.push_back(Args.MakeArgString("-mstack-alignment=" + alignment)); in ConstructJob()
5125 if (Args.hasArg(options::OPT_mstack_probe_size)) { in ConstructJob()
5126 StringRef Size = Args.getLastArgValue(options::OPT_mstack_probe_size); in ConstructJob()
5129 CmdArgs.push_back(Args.MakeArgString("-mstack-probe-size=" + Size)); in ConstructJob()
5148 if (Arg *A = Args.getLastArg(options::OPT_mrestrict_it, in ConstructJob()
5166 if (Args.getLastArg(options::OPT_cl_opt_disable)) { in ConstructJob()
5169 if (Args.getLastArg(options::OPT_cl_strict_aliasing)) { in ConstructJob()
5172 if (Args.getLastArg(options::OPT_cl_single_precision_constant)) { in ConstructJob()
5175 if (Args.getLastArg(options::OPT_cl_finite_math_only)) { in ConstructJob()
5178 if (Args.getLastArg(options::OPT_cl_kernel_arg_info)) { in ConstructJob()
5181 if (Args.getLastArg(options::OPT_cl_unsafe_math_optimizations)) { in ConstructJob()
5184 if (Args.getLastArg(options::OPT_cl_fast_relaxed_math)) { in ConstructJob()
5187 if (Args.getLastArg(options::OPT_cl_mad_enable)) { in ConstructJob()
5190 if (Args.getLastArg(options::OPT_cl_no_signed_zeros)) { in ConstructJob()
5193 if (Arg *A = Args.getLastArg(options::OPT_cl_std_EQ)) { in ConstructJob()
5196 CmdArgs.push_back(Args.MakeArgString(CLStdStr)); in ConstructJob()
5198 if (Args.getLastArg(options::OPT_cl_denorms_are_zero)) { in ConstructJob()
5204 if (Arg *A = Args.getLastArg(options::OPT_fprofile_sample_use_EQ)) { in ConstructJob()
5209 A->render(Args, CmdArgs); in ConstructJob()
5214 Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin, in ConstructJob()
5215 !Args.hasArg(options::OPT_mkernel)); in ConstructJob()
5220 if (Args.hasArg(options::OPT_ffreestanding)) in ConstructJob()
5224 for (const auto &Arg : Args) { in ConstructJob()
5236 CmdArgs.push_back(Args.MakeArgString("-fno-builtin-" + FuncName)); in ConstructJob()
5239 if (!Args.hasFlag(options::OPT_fassume_sane_operator_new, in ConstructJob()
5244 if (Args.hasFlag(options::OPT_fblocks, options::OPT_fno_blocks, in ConstructJob()
5246 (Args.hasArg(options::OPT_fgnu_runtime) && in ConstructJob()
5247 Args.hasArg(options::OPT_fobjc_nonfragile_abi) && in ConstructJob()
5248 !Args.hasArg(options::OPT_fno_blocks))) { in ConstructJob()
5251 if (!Args.hasArg(options::OPT_fgnu_runtime) && in ConstructJob()
5260 if (Args.hasFlag(options::OPT_fmodules, options::OPT_fno_modules, false)) { in ConstructJob()
5261 bool AllowedInCXX = Args.hasFlag(options::OPT_fcxx_modules, in ConstructJob()
5271 if (Args.hasFlag(options::OPT_fimplicit_module_maps, in ConstructJob()
5278 if (Args.hasFlag(options::OPT_fmodules_decluse, in ConstructJob()
5285 if (Args.hasFlag(options::OPT_fmodules_strict_decluse, in ConstructJob()
5291 if (!Args.hasFlag(options::OPT_fimplicit_modules, in ConstructJob()
5298 if (Arg *A = Args.getLastArg(options::OPT_fmodules_cache_path)) in ConstructJob()
5315 CmdArgs.push_back(Args.MakeArgString(Path)); in ConstructJob()
5320 Args.AddLastArg(CmdArgs, options::OPT_fmodule_name_EQ); in ConstructJob()
5324 Args.AddAllArgs(CmdArgs, options::OPT_fmodule_map_file); in ConstructJob()
5328 Args.AddAllArgs(CmdArgs, options::OPT_fmodule_file); in ConstructJob()
5330 Args.ClaimAllArgs(options::OPT_fmodule_file); in ConstructJob()
5338 C.addTempFile(Args.MakeArgString(VFSDir)); in ConstructJob()
5342 CmdArgs.push_back(Args.MakeArgString(VFSDir)); in ConstructJob()
5346 Args.AddLastArg(CmdArgs, options::OPT_fmodules_user_build_path); in ConstructJob()
5349 Args.AddAllArgs(CmdArgs, options::OPT_fmodules_ignore_macro); in ConstructJob()
5350 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_interval); in ConstructJob()
5351 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_after); in ConstructJob()
5353 Args.AddLastArg(CmdArgs, options::OPT_fbuild_session_timestamp); in ConstructJob()
5355 if (Arg *A = Args.getLastArg(options::OPT_fbuild_session_file)) { in ConstructJob()
5356 if (Args.hasArg(options::OPT_fbuild_session_timestamp)) in ConstructJob()
5358 << A->getAsString(Args) << "-fbuild-session-timestamp"; in ConstructJob()
5363 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
5368 if (Args.getLastArg(options::OPT_fmodules_validate_once_per_build_session)) { in ConstructJob()
5369 if (!Args.getLastArg(options::OPT_fbuild_session_timestamp, in ConstructJob()
5373 Args.AddLastArg(CmdArgs, in ConstructJob()
5377 Args.AddLastArg(CmdArgs, options::OPT_fmodules_validate_system_headers); in ConstructJob()
5380 if (Args.hasFlag(options::OPT_fno_access_control, in ConstructJob()
5385 if (Args.hasFlag(options::OPT_fno_elide_constructors, in ConstructJob()
5397 if (Args.hasFlag(options::OPT_fshort_enums, options::OPT_fno_short_enums, in ConstructJob()
5402 if (Arg *A = Args.getLastArg( in ConstructJob()
5414 if (!Args.hasFlag( in ConstructJob()
5427 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions, in ConstructJob()
5432 if (Args.hasFlag(options::OPT_fuse_line_directives, in ConstructJob()
5437 if (Args.hasFlag(options::OPT_fms_compatibility, in ConstructJob()
5440 Args.hasFlag(options::OPT_fms_extensions, in ConstructJob()
5446 &D, getToolChain(), getToolChain().getTriple(), Args, IsWindowsMSVC); in ConstructJob()
5449 Args.MakeArgString("-fms-compatibility-version=" + MSVT.getAsString())); in ConstructJob()
5454 if (const Arg *StdArg = Args.getLastArg(options::OPT__SLASH_std)) { in ConstructJob()
5461 << StdArg->getAsString(Args); in ConstructJob()
5475 if (Args.hasFlag(options::OPT_fborland_extensions, in ConstructJob()
5480 if (Args.hasFlag(options::OPT_fdeclspec, options::OPT_fno_declspec, in ConstructJob()
5483 else if (Args.hasArg(options::OPT_fno_declspec)) in ConstructJob()
5488 if (!Args.hasFlag(options::OPT_fthreadsafe_statics, in ConstructJob()
5495 if (Args.hasFlag(options::OPT_fdelayed_template_parsing, in ConstructJob()
5501 if (Arg *A = Args.getLastArg(options::OPT_fgnu_keywords, in ConstructJob()
5503 A->render(Args, CmdArgs); in ConstructJob()
5505 if (Args.hasFlag(options::OPT_fgnu89_inline, options::OPT_fno_gnu89_inline, in ConstructJob()
5509 if (Args.hasArg(options::OPT_fno_inline)) in ConstructJob()
5512 if (Arg* InlineArg = Args.getLastArg(options::OPT_finline_functions, in ConstructJob()
5515 InlineArg->render(Args, CmdArgs); in ConstructJob()
5517 ObjCRuntime objcRuntime = AddObjCRuntimeArgs(Args, CmdArgs, rewriteKind); in ConstructJob()
5524 if (!Args.hasFlag(options::OPT_fobjc_legacy_dispatch, in ConstructJob()
5552 bool ARC = isObjCAutoRefCount(Args); in ConstructJob()
5562 if (getToolChain().GetCXXStdlibType(Args) == ToolChain::CST_Libcxx) in ConstructJob()
5570 if (Args.hasFlag(options::OPT_fobjc_arc_exceptions, in ConstructJob()
5584 const Arg *GCArg = Args.getLastArg(options::OPT_fobjc_gc_only); in ConstructJob()
5586 GCArg = Args.getLastArg(options::OPT_fobjc_gc); in ConstructJob()
5589 D.Diag(diag::err_drv_objc_gc_arr) << GCArg->getAsString(Args); in ConstructJob()
5591 GCArg->render(Args, CmdArgs); in ConstructJob()
5594 D.Diag(diag::warn_drv_objc_gc_unsupported) << GCArg->getAsString(Args); in ConstructJob()
5600 auto WeakArg = Args.getLastArg(options::OPT_fobjc_weak, in ConstructJob()
5611 WeakArg->render(Args, CmdArgs); in ConstructJob()
5615 if (Args.hasFlag(options::OPT_fapplication_extension, in ConstructJob()
5621 addExceptionArgs(Args, InputType, getToolChain(), KernelOrKext, objcRuntime, in ConstructJob()
5624 if (Args.hasArg(options::OPT_fsjlj_exceptions) || in ConstructJob()
5625 getToolChain().UseSjLjExceptions(Args)) in ConstructJob()
5629 if (!Args.hasFlag(options::OPT_fassume_sane_operator_new, in ConstructJob()
5635 if (Args.hasFlag(options::OPT_fsized_deallocation, in ConstructJob()
5641 if (!Args.hasFlag(options::OPT_fconstant_cfstrings, in ConstructJob()
5643 !Args.hasFlag(options::OPT_mconstant_cfstrings, in ConstructJob()
5649 if (Arg *A = Args.getLastArg(options::OPT_fshort_wchar, in ConstructJob()
5651 A->render(Args, CmdArgs); in ConstructJob()
5654 if (Args.hasFlag(options::OPT_fpascal_strings, in ConstructJob()
5660 if (Arg *A = Args.getLastArg(options::OPT_fpack_struct_EQ)) { in ConstructJob()
5663 CmdArgs.push_back(Args.MakeArgString(PackStructStr)); in ConstructJob()
5664 } else if (Args.hasFlag(options::OPT_fpack_struct, in ConstructJob()
5670 bool SkipMaxTypeAlign = Args.hasArg(options::OPT_fno_max_type_align); in ConstructJob()
5671 if (Arg *A = Args.getLastArg(options::OPT_fmax_type_align_EQ)) { in ConstructJob()
5675 CmdArgs.push_back(Args.MakeArgString(MaxTypeAlignStr)); in ConstructJob()
5680 CmdArgs.push_back(Args.MakeArgString(MaxTypeAlignStr)); in ConstructJob()
5687 if (!Args.hasFlag(options::OPT_fcommon, options::OPT_fno_common, in ConstructJob()
5693 if (!Args.hasFlag(options::OPT_fsigned_bitfields, in ConstructJob()
5696 << Args.getLastArg(options::OPT_funsigned_bitfields)->getAsString(Args); in ConstructJob()
5699 if (!Args.hasFlag(options::OPT_ffor_scope, options::OPT_fno_for_scope)) in ConstructJob()
5701 << Args.getLastArg(options::OPT_fno_for_scope)->getAsString(Args); in ConstructJob()
5704 if (Arg *inputCharset = Args.getLastArg(options::OPT_finput_charset_EQ)) { in ConstructJob()
5707 D.Diag(diag::err_drv_invalid_value) << inputCharset->getAsString(Args) in ConstructJob()
5712 if (Arg *execCharset = Args.getLastArg(options::OPT_fexec_charset_EQ)) { in ConstructJob()
5715 D.Diag(diag::err_drv_invalid_value) << execCharset->getAsString(Args) in ConstructJob()
5720 if (!Args.hasFlag(options::OPT_fcaret_diagnostics, in ConstructJob()
5725 if (!Args.hasFlag(options::OPT_fdiagnostics_fixit_info, in ConstructJob()
5730 if (Args.hasFlag(options::OPT_fdiagnostics_show_option, in ConstructJob()
5735 Args.getLastArg(options::OPT_fdiagnostics_show_category_EQ)) { in ConstructJob()
5740 if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_format_EQ)) { in ConstructJob()
5745 if (Arg *A = Args.getLastArg( in ConstructJob()
5759 for (Arg *A : Args) { in ConstructJob()
5778 if (Args.hasArg(options::OPT_fansi_escape_codes)) in ConstructJob()
5781 if (!Args.hasFlag(options::OPT_fshow_source_location, in ConstructJob()
5785 if (!Args.hasFlag(options::OPT_fshow_column, options::OPT_fno_show_column, in ConstructJob()
5789 if (!Args.hasFlag(options::OPT_fspell_checking, in ConstructJob()
5794 if (Args.hasFlag(options::OPT_fasm_blocks, options::OPT_fno_asm_blocks, in ConstructJob()
5799 if (!Args.hasFlag(options::OPT_fgnu_inline_asm, in ConstructJob()
5806 bool EnableVec = shouldEnableVectorizerAtOLevel(Args, false); in ConstructJob()
5809 if (Args.hasFlag(options::OPT_fvectorize, VectorizeAliasOption, in ConstructJob()
5814 bool EnableSLPVec = shouldEnableVectorizerAtOLevel(Args, true); in ConstructJob()
5817 if (Args.hasFlag(options::OPT_fslp_vectorize, SLPVectAliasOption, in ConstructJob()
5822 if (Args.hasFlag(options::OPT_fslp_vectorize_aggressive, in ConstructJob()
5826 if (Arg *A = Args.getLastArg(options::OPT_fshow_overloads_EQ)) in ConstructJob()
5827 A->render(Args, CmdArgs); in ConstructJob()
5829 if (Arg *A = Args.getLastArg( in ConstructJob()
5831 A->render(Args, CmdArgs); in ConstructJob()
5835 if (Arg *A = Args.getLastArg(options::OPT_fdollars_in_identifiers, in ConstructJob()
5845 if (Arg *A = Args.getLastArg(options::OPT_funit_at_a_time, in ConstructJob()
5848 D.Diag(diag::warn_drv_clang_unsupported) << A->getAsString(Args); in ConstructJob()
5851 if (Args.hasFlag(options::OPT_fapple_pragma_pack, in ConstructJob()
5869 if (!Args.hasArg(options::OPT_fbuiltin_strcat)) in ConstructJob()
5871 if (!Args.hasArg(options::OPT_fbuiltin_strcpy)) in ConstructJob()
5880 if (Args.hasFlag(options::OPT_frewrite_includes, in ConstructJob()
5886 if (Arg *A = Args.getLastArg(options::OPT_traditional, in ConstructJob()
5891 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); in ConstructJob()
5894 Args.AddLastArg(CmdArgs, options::OPT_dM); in ConstructJob()
5895 Args.AddLastArg(CmdArgs, options::OPT_dD); in ConstructJob()
5898 if (Arg *A = Args.getLastArg(options::OPT__serialize_diags)) { in ConstructJob()
5900 CmdArgs.push_back(Args.MakeArgString(A->getValue())); in ConstructJob()
5903 if (Args.hasArg(options::OPT_fretain_comments_from_system_headers)) in ConstructJob()
5907 Args.AddAllArgs(CmdArgs, options::OPT_fcomment_block_commands); in ConstructJob()
5909 Args.AddAllArgs(CmdArgs, options::OPT_fparse_all_comments); in ConstructJob()
5912 for (const Arg *A : Args.filtered(options::OPT_fplugin_EQ)) { in ConstructJob()
5920 Args.AddAllArgValues(CmdArgs, options::OPT_Xclang); in ConstructJob()
5921 for (const Arg *A : Args.filtered(options::OPT_mllvm)) { in ConstructJob()
5929 A->render(Args, CmdArgs); in ConstructJob()
5953 addDashXForInput(Args, Input, CmdArgs); in ConstructJob()
5958 Input.getInputArg().renderAsInput(Args, CmdArgs); in ConstructJob()
5960 Args.AddAllArgs(CmdArgs, options::OPT_undef); in ConstructJob()
5968 for (const auto &Arg : Args) in ConstructJob()
5969 Arg->render(Args, OriginalArgs); in ConstructJob()
5980 CmdArgs.push_back(Args.MakeArgString(Flags)); in ConstructJob()
5991 SplitDwarfOut = SplitDebugName(Args, Input); in ConstructJob()
6004 Args.hasFlag(options::OPT_fwhole_program_vtables, in ConstructJob()
6015 if (Args.hasArg(options::OPT__SLASH_fallback) && in ConstructJob()
6019 getCLFallback()->GetCommand(C, JA, Output, Inputs, Args, LinkingOutput); in ConstructJob()
6022 } else if (Args.hasArg(options::OPT__SLASH_fallback) && in ConstructJob()
6036 SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output, SplitDwarfOut); in ConstructJob()
6038 if (Arg *A = Args.getLastArg(options::OPT_pg)) in ConstructJob()
6039 if (Args.hasArg(options::OPT_fomit_frame_pointer)) in ConstructJob()
6041 << A->getAsString(Args); in ConstructJob()
6048 Args.ClaimAllArgs(options::OPT_fpch_preprocess); in ConstructJob()
6052 Args.ClaimAllArgs(options::OPT_clang_ignored_f_Group); in ConstructJob()
6053 Args.ClaimAllArgs(options::OPT_clang_ignored_m_Group); in ConstructJob()
6056 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
6204 static EHFlags parseClangCLEHFlags(const Driver &D, const ArgList &Args) { in parseClangCLEHFlags() argument
6208 Args.getAllArgValues(options::OPT__SLASH_EH); in parseClangCLEHFlags()
6235 Args.hasFlag(options::OPT__SLASH_GX, options::OPT__SLASH_GX_, in parseClangCLEHFlags()
6244 void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType, in AddClangCLArgs() argument
6250 if (Args.hasArg(options::OPT__SLASH_LDd)) in AddClangCLArgs()
6255 if (Arg *A = Args.getLastArg(options::OPT__SLASH_M_Group)) in AddClangCLArgs()
6261 if (Args.hasArg(options::OPT__SLASH_LDd)) in AddClangCLArgs()
6274 if (Args.hasArg(options::OPT__SLASH_LDd)) in AddClangCLArgs()
6290 if (Args.hasArg(options::OPT__SLASH_Zl)) { in AddClangCLArgs()
6303 if (!Args.hasArg(options::OPT_E) && !Args.hasArg(options::OPT__SLASH_EP)) in AddClangCLArgs()
6304 if (Arg *A = Args.getLastArg(options::OPT_show_includes)) in AddClangCLArgs()
6305 A->render(Args, CmdArgs); in AddClangCLArgs()
6308 if (Args.hasFlag(options::OPT__SLASH_GR_, options::OPT__SLASH_GR, in AddClangCLArgs()
6314 if (Args.hasFlag(options::OPT__SLASH_GS, options::OPT__SLASH_GS_, in AddClangCLArgs()
6317 CmdArgs.push_back(Args.MakeArgString(Twine(LangOptions::SSPStrong))); in AddClangCLArgs()
6322 Args.getLastArg(options::OPT__SLASH_Z7, options::OPT__SLASH_Zd)) { in AddClangCLArgs()
6334 EHFlags EH = parseClangCLEHFlags(D, Args); in AddClangCLArgs()
6344 if (Args.hasArg(options::OPT__SLASH_EP)) { in AddClangCLArgs()
6356 if (Arg *A = Args.getLastArg(options::OPT__SLASH_volatile_Group)) in AddClangCLArgs()
6362 Arg *MostGeneralArg = Args.getLastArg(options::OPT__SLASH_vmg); in AddClangCLArgs()
6363 Arg *BestCaseArg = Args.getLastArg(options::OPT__SLASH_vmb); in AddClangCLArgs()
6366 << MostGeneralArg->getAsString(Args) << BestCaseArg->getAsString(Args); in AddClangCLArgs()
6369 Arg *SingleArg = Args.getLastArg(options::OPT__SLASH_vms); in AddClangCLArgs()
6370 Arg *MultipleArg = Args.getLastArg(options::OPT__SLASH_vmm); in AddClangCLArgs()
6371 Arg *VirtualArg = Args.getLastArg(options::OPT__SLASH_vmv); in AddClangCLArgs()
6377 << FirstConflict->getAsString(Args) in AddClangCLArgs()
6378 << SecondConflict->getAsString(Args); in AddClangCLArgs()
6388 if (Args.getLastArg(options::OPT__SLASH_Gd)) in AddClangCLArgs()
6390 else if (Args.getLastArg(options::OPT__SLASH_Gr)) in AddClangCLArgs()
6392 else if (Args.getLastArg(options::OPT__SLASH_Gz)) in AddClangCLArgs()
6394 else if (Args.getLastArg(options::OPT__SLASH_Gv)) in AddClangCLArgs()
6397 if (Arg *A = Args.getLastArg(options::OPT_vtordisp_mode_EQ)) in AddClangCLArgs()
6398 A->render(Args, CmdArgs); in AddClangCLArgs()
6400 if (!Args.hasArg(options::OPT_fdiagnostics_format_EQ)) { in AddClangCLArgs()
6402 if (Args.hasArg(options::OPT__SLASH_fallback)) in AddClangCLArgs()
6415 void ClangAs::AddMIPSTargetArgs(const ArgList &Args, in AddMIPSTargetArgs() argument
6420 mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName); in AddMIPSTargetArgs()
6428 const ArgList &Args, in ConstructJob() argument
6436 getToolChain().ComputeEffectiveClangTriple(Args, Input.getType()); in ConstructJob()
6440 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
6442 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
6444 claimNoWarnArgs(Args); in ConstructJob()
6453 CmdArgs.push_back(Args.MakeArgString(TripleStr)); in ConstructJob()
6463 CmdArgs.push_back(Clang::getBaseInputName(Args, Input)); in ConstructJob()
6466 std::string CPU = getCPUName(Args, Triple, /*FromAs*/ true); in ConstructJob()
6469 CmdArgs.push_back(Args.MakeArgString(CPU)); in ConstructJob()
6473 getTargetFeatures(getToolChain(), Triple, Args, CmdArgs, true); in ConstructJob()
6476 (void)Args.hasArg(options::OPT_force__cpusubtype__ALL); in ConstructJob()
6479 Args.AddAllArgs(CmdArgs, options::OPT_I_Group); in ConstructJob()
6492 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
6493 if (Arg *A = Args.getLastArg(options::OPT_g_Group)) { in ConstructJob()
6513 addDebugCompDirArg(Args, CmdArgs); in ConstructJob()
6518 CmdArgs.push_back(Args.MakeArgString(getClangFullVersion())); in ConstructJob()
6521 Args.AddAllArgs(CmdArgs, options::OPT_I); in ConstructJob()
6523 RenderDebugEnablingArgs(Args, CmdArgs, DebugInfoKind, DwarfVersion, in ConstructJob()
6532 ParsePICArgs(getToolChain(), Triple, Args); in ConstructJob()
6544 for (const auto &Arg : Args) in ConstructJob()
6545 Arg->render(Args, OriginalArgs); in ConstructJob()
6557 CmdArgs.push_back(Args.MakeArgString(Flags)); in ConstructJob()
6571 AddMIPSTargetArgs(Args, CmdArgs); in ConstructJob()
6580 Args.ClaimAllArgs(options::OPT_W_Group); in ConstructJob()
6582 CollectArgsForIntegratedAssembler(C, Args, CmdArgs, in ConstructJob()
6585 Args.AddAllArgs(CmdArgs, options::OPT_mllvm); in ConstructJob()
6600 if (Args.hasArg(options::OPT_gsplit_dwarf) && in ConstructJob()
6602 SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output, in ConstructJob()
6603 SplitDebugName(Args, Input)); in ConstructJob()
6610 const InputInfoList &Inputs, const ArgList &Args, in ConstructJob() argument
6615 for (const auto &A : Args) { in ConstructJob()
6633 A->render(Args, CmdArgs); in ConstructJob()
6643 Args.MakeArgString(getToolChain().getDefaultUniversalArchName())); in ConstructJob()
6676 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
6714 A.render(Args, CmdArgs); in ConstructJob()
6727 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath(GCCName)); in ConstructJob()
6777 const ArgList &Args, in ConstructJob() argument
6779 claimNoWarnArgs(Args); in ConstructJob()
6786 CmdArgs.push_back(Args.MakeArgString(MArchString)); in ConstructJob()
6792 toolchains::HexagonToolChain::GetTargetCPUVersion(Args).str(); in ConstructJob()
6794 CmdArgs.push_back(Args.MakeArgString(MCpuString)); in ConstructJob()
6804 if (auto G = toolchains::HexagonToolChain::getSmallDataThreshold(Args)) { in ConstructJob()
6806 CmdArgs.push_back(Args.MakeArgString(std::string("-gpsize=") + N)); in ConstructJob()
6809 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
6836 II.getInputArg().render(Args, CmdArgs); in ConstructJob()
6839 auto *Exec = Args.MakeArgString(HTC.GetProgramPath(AsName.c_str())); in ConstructJob()
6851 const ArgList &Args, ArgStringList &CmdArgs, in constructHexagonLinkArgs() argument
6859 bool IsStatic = Args.hasArg(options::OPT_static); in constructHexagonLinkArgs()
6860 bool IsShared = Args.hasArg(options::OPT_shared); in constructHexagonLinkArgs()
6861 bool IsPIE = Args.hasArg(options::OPT_pie); in constructHexagonLinkArgs()
6862 bool IncStdLib = !Args.hasArg(options::OPT_nostdlib); in constructHexagonLinkArgs()
6863 bool IncStartFiles = !Args.hasArg(options::OPT_nostartfiles); in constructHexagonLinkArgs()
6864 bool IncDefLibs = !Args.hasArg(options::OPT_nodefaultlibs); in constructHexagonLinkArgs()
6871 Args.ClaimAllArgs(options::OPT_g_Group); in constructHexagonLinkArgs()
6872 Args.ClaimAllArgs(options::OPT_emit_llvm); in constructHexagonLinkArgs()
6873 Args.ClaimAllArgs(options::OPT_w); // Other warning options are already in constructHexagonLinkArgs()
6875 Args.ClaimAllArgs(options::OPT_static_libgcc); in constructHexagonLinkArgs()
6880 if (Args.hasArg(options::OPT_s)) in constructHexagonLinkArgs()
6883 if (Args.hasArg(options::OPT_r)) in constructHexagonLinkArgs()
6891 toolchains::HexagonToolChain::GetTargetCPUVersion(Args).str(); in constructHexagonLinkArgs()
6893 CmdArgs.push_back(Args.MakeArgString(MCpuString)); in constructHexagonLinkArgs()
6907 if (auto G = toolchains::HexagonToolChain::getSmallDataThreshold(Args)) { in constructHexagonLinkArgs()
6909 CmdArgs.push_back(Args.MakeArgString(std::string("-G") + N)); in constructHexagonLinkArgs()
6925 for (const Arg *A : Args.filtered(options::OPT_moslib_EQ)) { in constructHexagonLinkArgs()
6958 CmdArgs.push_back(Args.MakeArgString(Crt0SA)); in constructHexagonLinkArgs()
6961 CmdArgs.push_back(Args.MakeArgString(Crt0)); in constructHexagonLinkArgs()
6966 CmdArgs.push_back(Args.MakeArgString(Init)); in constructHexagonLinkArgs()
6974 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + LibPath)); in constructHexagonLinkArgs()
6979 Args.AddAllArgs(CmdArgs, in constructHexagonLinkArgs()
6983 AddLinkerInputs(HTC, Inputs, Args, CmdArgs); in constructHexagonLinkArgs()
6990 HTC.AddCXXStdlibLibArgs(Args, CmdArgs); in constructHexagonLinkArgs()
6998 CmdArgs.push_back(Args.MakeArgString("-l" + Lib)); in constructHexagonLinkArgs()
7013 CmdArgs.push_back(Args.MakeArgString(Fini)); in constructHexagonLinkArgs()
7020 const ArgList &Args, in ConstructJob() argument
7025 constructHexagonLinkArgs(C, JA, HTC, Output, Inputs, Args, CmdArgs, in ConstructJob()
7029 C.addCommand(llvm::make_unique<Command>(JA, *this, Args.MakeArgString(Linker), in ConstructJob()
7037 const ArgList &Args, in ConstructJob() argument
7042 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); in ConstructJob()
7046 C.addCommand(llvm::make_unique<Command>(JA, *this, Args.MakeArgString(Linker), in ConstructJob()
7065 const ArgList &Args, in ConstructJob() argument
7070 const char *Linker = Args.MakeArgString(ToolChain.GetLinkerPath()); in ConstructJob()
7079 if (areOptimizationsEnabled(Args)) in ConstructJob()
7082 if (Args.hasArg(options::OPT_rdynamic)) in ConstructJob()
7084 if (Args.hasArg(options::OPT_s)) in ConstructJob()
7086 if (Args.hasArg(options::OPT_shared)) in ConstructJob()
7088 if (Args.hasArg(options::OPT_static)) in ConstructJob()
7091 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructJob()
7092 ToolChain.AddFilePathLibArgs(Args, CmdArgs); in ConstructJob()
7094 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
7095 if (Args.hasArg(options::OPT_shared)) in ConstructJob()
7096 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("rcrt1.o"))); in ConstructJob()
7097 else if (Args.hasArg(options::OPT_pie)) in ConstructJob()
7098 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("Scrt1.o"))); in ConstructJob()
7100 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt1.o"))); in ConstructJob()
7102 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o"))); in ConstructJob()
7105 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs); in ConstructJob()
7107 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
7109 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
7111 if (Args.hasArg(options::OPT_pthread)) in ConstructJob()
7118 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) in ConstructJob()
7119 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o"))); in ConstructJob()
7208 void arm::appendEBLinkFlags(const ArgList &Args, ArgStringList &CmdArgs, in appendEBLinkFlags() argument
7210 if (Args.hasArg(options::OPT_r)) in appendEBLinkFlags()
7250 bool mips::hasMipsAbiArg(const ArgList &Args, const char *Value) { in hasMipsAbiArg() argument
7251 Arg *A = Args.getLastArg(options::OPT_mabi_EQ); in hasMipsAbiArg()
7255 bool mips::isUCLibc(const ArgList &Args) { in isUCLibc() argument
7256 Arg *A = Args.getLastArg(options::OPT_m_libc_Group); in isUCLibc()
7260 bool mips::isNaN2008(const ArgList &Args, const llvm::Triple &Triple) { in isNaN2008() argument
7261 if (Arg *NaNArg = Args.getLastArg(options::OPT_mnan_EQ)) in isNaN2008()
7268 return llvm::StringSwitch<bool>(getCPUName(Args, Triple)) in isNaN2008()
7307 bool mips::shouldUseFPXX(const ArgList &Args, const llvm::Triple &Triple, in shouldUseFPXX() argument
7313 if (Arg *A = Args.getLastArg(options::OPT_msingle_float, in shouldUseFPXX()
7368 const char *Clang::getBaseInputName(const ArgList &Args, in getBaseInputName() argument
7370 return Args.MakeArgString(llvm::sys::path::filename(Input.getBaseInput())); in getBaseInputName()
7373 const char *Clang::getBaseInputStem(const ArgList &Args, in getBaseInputStem() argument
7375 const char *Str = getBaseInputName(Args, Inputs[0]); in getBaseInputStem()
7378 return Args.MakeArgString(std::string(Str, End)); in getBaseInputStem()
7383 const char *Clang::getDependencyFileName(const ArgList &Args, in getDependencyFileName() argument
7388 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) { in getDependencyFileName()
7392 Res = getBaseInputStem(Args, Inputs); in getDependencyFileName()
7394 return Args.MakeArgString(Res + ".d"); in getDependencyFileName()
7400 const ArgList &Args, in ConstructJob() argument
7407 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
7409 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
7412 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
7415 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); in ConstructJob()
7435 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
7436 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt0.o"))); in ConstructJob()
7437 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtbegin.o"))); in ConstructJob()
7440 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructJob()
7441 ToolChain.AddFilePathLibArgs(Args, CmdArgs); in ConstructJob()
7442 Args.AddAllArgs(CmdArgs, in ConstructJob()
7447 AddGoldPlugin(ToolChain, Args, CmdArgs, D.getLTOMode() == LTOK_Thin); in ConstructJob()
7449 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs); in ConstructJob()
7451 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
7453 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
7458 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) in ConstructJob()
7459 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtend.o"))); in ConstructJob()
7461 const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath()); in ConstructJob()
7468 const ArgList &Args, in ConstructJob() argument
7487 if (Args.hasArg(options::OPT_fno_integrated_as)) { in ConstructJob()
7496 if (Args.hasArg(options::OPT_gstabs)) in ConstructJob()
7498 else if (Args.hasArg(options::OPT_g_Group)) in ConstructJob()
7503 AddMachOArch(Args, CmdArgs); in ConstructJob()
7508 Args.hasArg(options::OPT_force__cpusubtype__ALL)) in ConstructJob()
7512 (((Args.hasArg(options::OPT_mkernel) || in ConstructJob()
7513 Args.hasArg(options::OPT_fapple_kext)) && in ConstructJob()
7515 Args.hasArg(options::OPT_static))) in ConstructJob()
7518 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
7529 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as")); in ConstructJob()
7535 void darwin::MachOTool::AddMachOArch(const ArgList &Args, in AddMachOArch() argument
7537 StringRef ArchName = getMachOToolChain().getMachOArchName(Args); in AddMachOArch()
7541 CmdArgs.push_back(Args.MakeArgString(ArchName)); in AddMachOArch()
7559 void darwin::Linker::AddLinkArgs(Compilation &C, const ArgList &Args, in AddLinkArgs() argument
7566 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) { in AddLinkArgs()
7568 D.Diag(diag::err_drv_invalid_version_number) << A->getAsString(Args); in AddLinkArgs()
7573 if (Version[0] >= 100 && !Args.hasArg(options::OPT_Z_Xlinker__no_demangle)) in AddLinkArgs()
7576 if (Args.hasArg(options::OPT_rdynamic) && Version[0] >= 137) in AddLinkArgs()
7581 if (Args.hasFlag(options::OPT_fapplication_extension, in AddLinkArgs()
7616 Args.AddAllArgs(CmdArgs, options::OPT_static); in AddLinkArgs()
7617 if (!Args.hasArg(options::OPT_static)) in AddLinkArgs()
7619 if (Args.hasArg(options::OPT_fgnu_runtime)) { in AddLinkArgs()
7624 if (!Args.hasArg(options::OPT_dynamiclib)) { in AddLinkArgs()
7625 AddMachOArch(Args, CmdArgs); in AddLinkArgs()
7627 Args.AddLastArg(CmdArgs, options::OPT_force__cpusubtype__ALL); in AddLinkArgs()
7629 Args.AddLastArg(CmdArgs, options::OPT_bundle); in AddLinkArgs()
7630 Args.AddAllArgs(CmdArgs, options::OPT_bundle__loader); in AddLinkArgs()
7631 Args.AddAllArgs(CmdArgs, options::OPT_client__name); in AddLinkArgs()
7634 if ((A = Args.getLastArg(options::OPT_compatibility__version)) || in AddLinkArgs()
7635 (A = Args.getLastArg(options::OPT_current__version)) || in AddLinkArgs()
7636 (A = Args.getLastArg(options::OPT_install__name))) in AddLinkArgs()
7637 D.Diag(diag::err_drv_argument_only_allowed_with) << A->getAsString(Args) in AddLinkArgs()
7640 Args.AddLastArg(CmdArgs, options::OPT_force__flat__namespace); in AddLinkArgs()
7641 Args.AddLastArg(CmdArgs, options::OPT_keep__private__externs); in AddLinkArgs()
7642 Args.AddLastArg(CmdArgs, options::OPT_private__bundle); in AddLinkArgs()
7647 if ((A = Args.getLastArg(options::OPT_bundle)) || in AddLinkArgs()
7648 (A = Args.getLastArg(options::OPT_bundle__loader)) || in AddLinkArgs()
7649 (A = Args.getLastArg(options::OPT_client__name)) || in AddLinkArgs()
7650 (A = Args.getLastArg(options::OPT_force__flat__namespace)) || in AddLinkArgs()
7651 (A = Args.getLastArg(options::OPT_keep__private__externs)) || in AddLinkArgs()
7652 (A = Args.getLastArg(options::OPT_private__bundle))) in AddLinkArgs()
7653 D.Diag(diag::err_drv_argument_not_allowed_with) << A->getAsString(Args) in AddLinkArgs()
7656 Args.AddAllArgsTranslated(CmdArgs, options::OPT_compatibility__version, in AddLinkArgs()
7658 Args.AddAllArgsTranslated(CmdArgs, options::OPT_current__version, in AddLinkArgs()
7661 AddMachOArch(Args, CmdArgs); in AddLinkArgs()
7663 Args.AddAllArgsTranslated(CmdArgs, options::OPT_install__name, in AddLinkArgs()
7667 Args.AddLastArg(CmdArgs, options::OPT_all__load); in AddLinkArgs()
7668 Args.AddAllArgs(CmdArgs, options::OPT_allowable__client); in AddLinkArgs()
7669 Args.AddLastArg(CmdArgs, options::OPT_bind__at__load); in AddLinkArgs()
7671 Args.AddLastArg(CmdArgs, options::OPT_arch__errors__fatal); in AddLinkArgs()
7672 Args.AddLastArg(CmdArgs, options::OPT_dead__strip); in AddLinkArgs()
7673 Args.AddLastArg(CmdArgs, options::OPT_no__dead__strip__inits__and__terms); in AddLinkArgs()
7674 Args.AddAllArgs(CmdArgs, options::OPT_dylib__file); in AddLinkArgs()
7675 Args.AddLastArg(CmdArgs, options::OPT_dynamic); in AddLinkArgs()
7676 Args.AddAllArgs(CmdArgs, options::OPT_exported__symbols__list); in AddLinkArgs()
7677 Args.AddLastArg(CmdArgs, options::OPT_flat__namespace); in AddLinkArgs()
7678 Args.AddAllArgs(CmdArgs, options::OPT_force__load); in AddLinkArgs()
7679 Args.AddAllArgs(CmdArgs, options::OPT_headerpad__max__install__names); in AddLinkArgs()
7680 Args.AddAllArgs(CmdArgs, options::OPT_image__base); in AddLinkArgs()
7681 Args.AddAllArgs(CmdArgs, options::OPT_init); in AddLinkArgs()
7684 MachOTC.addMinVersionArgs(Args, CmdArgs); in AddLinkArgs()
7686 Args.AddLastArg(CmdArgs, options::OPT_nomultidefs); in AddLinkArgs()
7687 Args.AddLastArg(CmdArgs, options::OPT_multi__module); in AddLinkArgs()
7688 Args.AddLastArg(CmdArgs, options::OPT_single__module); in AddLinkArgs()
7689 Args.AddAllArgs(CmdArgs, options::OPT_multiply__defined); in AddLinkArgs()
7690 Args.AddAllArgs(CmdArgs, options::OPT_multiply__defined__unused); in AddLinkArgs()
7693 Args.getLastArg(options::OPT_fpie, options::OPT_fPIE, in AddLinkArgs()
7711 Args.AddLastArg(CmdArgs, options::OPT_prebind); in AddLinkArgs()
7712 Args.AddLastArg(CmdArgs, options::OPT_noprebind); in AddLinkArgs()
7713 Args.AddLastArg(CmdArgs, options::OPT_nofixprebinding); in AddLinkArgs()
7714 Args.AddLastArg(CmdArgs, options::OPT_prebind__all__twolevel__modules); in AddLinkArgs()
7715 Args.AddLastArg(CmdArgs, options::OPT_read__only__relocs); in AddLinkArgs()
7716 Args.AddAllArgs(CmdArgs, options::OPT_sectcreate); in AddLinkArgs()
7717 Args.AddAllArgs(CmdArgs, options::OPT_sectorder); in AddLinkArgs()
7718 Args.AddAllArgs(CmdArgs, options::OPT_seg1addr); in AddLinkArgs()
7719 Args.AddAllArgs(CmdArgs, options::OPT_segprot); in AddLinkArgs()
7720 Args.AddAllArgs(CmdArgs, options::OPT_segaddr); in AddLinkArgs()
7721 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__only__addr); in AddLinkArgs()
7722 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__write__addr); in AddLinkArgs()
7723 Args.AddAllArgs(CmdArgs, options::OPT_seg__addr__table); in AddLinkArgs()
7724 Args.AddAllArgs(CmdArgs, options::OPT_seg__addr__table__filename); in AddLinkArgs()
7725 Args.AddAllArgs(CmdArgs, options::OPT_sub__library); in AddLinkArgs()
7726 Args.AddAllArgs(CmdArgs, options::OPT_sub__umbrella); in AddLinkArgs()
7734 } else if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) { in AddLinkArgs()
7739 Args.AddLastArg(CmdArgs, options::OPT_twolevel__namespace); in AddLinkArgs()
7740 Args.AddLastArg(CmdArgs, options::OPT_twolevel__namespace__hints); in AddLinkArgs()
7741 Args.AddAllArgs(CmdArgs, options::OPT_umbrella); in AddLinkArgs()
7742 Args.AddAllArgs(CmdArgs, options::OPT_undefined); in AddLinkArgs()
7743 Args.AddAllArgs(CmdArgs, options::OPT_unexported__symbols__list); in AddLinkArgs()
7744 Args.AddAllArgs(CmdArgs, options::OPT_weak__reference__mismatches); in AddLinkArgs()
7745 Args.AddLastArg(CmdArgs, options::OPT_X_Flag); in AddLinkArgs()
7746 Args.AddAllArgs(CmdArgs, options::OPT_y); in AddLinkArgs()
7747 Args.AddLastArg(CmdArgs, options::OPT_w); in AddLinkArgs()
7748 Args.AddAllArgs(CmdArgs, options::OPT_pagezero__size); in AddLinkArgs()
7749 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__); in AddLinkArgs()
7750 Args.AddLastArg(CmdArgs, options::OPT_seglinkedit); in AddLinkArgs()
7751 Args.AddLastArg(CmdArgs, options::OPT_noseglinkedit); in AddLinkArgs()
7752 Args.AddAllArgs(CmdArgs, options::OPT_sectalign); in AddLinkArgs()
7753 Args.AddAllArgs(CmdArgs, options::OPT_sectobjectsymbols); in AddLinkArgs()
7754 Args.AddAllArgs(CmdArgs, options::OPT_segcreate); in AddLinkArgs()
7755 Args.AddLastArg(CmdArgs, options::OPT_whyload); in AddLinkArgs()
7756 Args.AddLastArg(CmdArgs, options::OPT_whatsloaded); in AddLinkArgs()
7757 Args.AddAllArgs(CmdArgs, options::OPT_dylinker__install__name); in AddLinkArgs()
7758 Args.AddLastArg(CmdArgs, options::OPT_dylinker); in AddLinkArgs()
7759 Args.AddLastArg(CmdArgs, options::OPT_Mach); in AddLinkArgs()
7765 const ArgList &Args, in ConstructJob() argument
7781 if (Args.hasArg(options::OPT_ccc_arcmt_check, in ConstructJob()
7783 for (const auto &Arg : Args) in ConstructJob()
7786 Args.MakeArgString(getToolChain().GetProgramPath("touch")); in ConstructJob()
7794 AddLinkArgs(C, Args, CmdArgs, Inputs); in ConstructJob()
7798 Args.AddAllArgs(CmdArgs, {options::OPT_d_Flag, options::OPT_s, options::OPT_t, in ConstructJob()
7805 if (Args.hasArg(options::OPT_ObjC) || Args.hasArg(options::OPT_ObjCXX)) in ConstructJob()
7811 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) in ConstructJob()
7812 getMachOToolChain().addStartObjectFileArgs(Args, CmdArgs); in ConstructJob()
7818 getMachOToolChain().AddLinkRuntimeLib(Args, CmdArgs, in ConstructJob()
7823 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructJob()
7825 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); in ConstructJob()
7843 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) in ConstructJob()
7844 addOpenMPRuntime(CmdArgs, getToolChain(), Args); in ConstructJob()
7846 if (isObjCRuntimeLinked(Args) && in ConstructJob()
7847 !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
7849 getMachOToolChain().AddLinkARCArgs(Args, CmdArgs); in ConstructJob()
7863 if (Args.hasArg(options::OPT_fnested_functions)) in ConstructJob()
7866 getMachOToolChain().addProfileRTLibs(Args, CmdArgs); in ConstructJob()
7868 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
7870 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
7875 getMachOToolChain().AddLinkRuntimeLibArgs(Args, CmdArgs); in ConstructJob()
7878 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
7882 Args.AddAllArgs(CmdArgs, options::OPT_T_Group); in ConstructJob()
7883 Args.AddAllArgs(CmdArgs, options::OPT_F); in ConstructJob()
7886 for (const Arg *A : Args.filtered(options::OPT_iframework)) in ConstructJob()
7887 CmdArgs.push_back(Args.MakeArgString(std::string("-F") + A->getValue())); in ConstructJob()
7889 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
7890 if (Arg *A = Args.getLastArg(options::OPT_fveclib)) { in ConstructJob()
7898 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); in ConstructJob()
7908 const ArgList &Args, in ConstructJob() argument
7923 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("lipo")); in ConstructJob()
7930 const ArgList &Args, in ConstructJob() argument
7943 Args.MakeArgString(getToolChain().GetProgramPath("dsymutil")); in ConstructJob()
7950 const ArgList &Args, in ConstructJob() argument
7966 Args.MakeArgString(getToolChain().GetProgramPath("dwarfdump")); in ConstructJob()
7973 const ArgList &Args, in ConstructJob() argument
7975 claimNoWarnArgs(Args); in ConstructJob()
7978 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
7986 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as")); in ConstructJob()
7993 const ArgList &Args, in ConstructJob() argument
8000 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_shared)) { in ConstructJob()
8005 if (Args.hasArg(options::OPT_static)) { in ConstructJob()
8010 if (Args.hasArg(options::OPT_shared)) { in ConstructJob()
8015 Args.MakeArgString(getToolChain().GetFilePath("ld.so.1"))); in ConstructJob()
8026 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
8027 if (!Args.hasArg(options::OPT_shared)) in ConstructJob()
8029 Args.MakeArgString(getToolChain().GetFilePath("crt1.o"))); in ConstructJob()
8031 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crti.o"))); in ConstructJob()
8033 Args.MakeArgString(getToolChain().GetFilePath("values-Xa.o"))); in ConstructJob()
8035 Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); in ConstructJob()
8038 getToolChain().AddFilePathLibArgs(Args, CmdArgs); in ConstructJob()
8040 Args.AddAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group, in ConstructJob()
8043 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); in ConstructJob()
8045 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
8047 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
8050 if (!Args.hasArg(options::OPT_shared)) { in ConstructJob()
8056 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
8058 Args.MakeArgString(getToolChain().GetFilePath("crtend.o"))); in ConstructJob()
8060 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o"))); in ConstructJob()
8062 getToolChain().addProfileRTLibs(Args, CmdArgs); in ConstructJob()
8064 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); in ConstructJob()
8071 const ArgList &Args, in ConstructJob() argument
8073 claimNoWarnArgs(Args); in ConstructJob()
8091 std::string CPU = getCPUName(Args, getToolChain().getTriple()); in ConstructJob()
8093 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
8099 std::string CPU = getCPUName(Args, getToolChain().getTriple()); in ConstructJob()
8101 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
8109 mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName); in ConstructJob()
8119 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
8127 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
8135 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as")); in ConstructJob()
8142 const ArgList &Args, in ConstructJob() argument
8148 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
8150 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
8153 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
8160 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_shared)) { in ConstructJob()
8165 if (Args.hasArg(options::OPT_static)) { in ConstructJob()
8168 if (Args.hasArg(options::OPT_rdynamic)) in ConstructJob()
8172 if (Args.hasArg(options::OPT_shared)) { in ConstructJob()
8180 if (Args.hasArg(options::OPT_nopie)) in ConstructJob()
8190 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
8191 if (!Args.hasArg(options::OPT_shared)) { in ConstructJob()
8192 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
8194 Args.MakeArgString(getToolChain().GetFilePath("gcrt0.o"))); in ConstructJob()
8197 Args.MakeArgString(getToolChain().GetFilePath("crt0.o"))); in ConstructJob()
8199 Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); in ConstructJob()
8202 Args.MakeArgString(getToolChain().GetFilePath("crtbeginS.o"))); in ConstructJob()
8210 Args.MakeArgString("-L/usr/lib/gcc-lib/" + Triple + "/4.2.1")); in ConstructJob()
8212 Args.AddAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group, in ConstructJob()
8216 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); in ConstructJob()
8218 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
8220 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
8221 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
8231 if (Args.hasArg(options::OPT_pthread)) { in ConstructJob()
8232 if (!Args.hasArg(options::OPT_shared) && Args.hasArg(options::OPT_pg)) in ConstructJob()
8238 if (!Args.hasArg(options::OPT_shared)) { in ConstructJob()
8239 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
8248 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
8249 if (!Args.hasArg(options::OPT_shared)) in ConstructJob()
8251 Args.MakeArgString(getToolChain().GetFilePath("crtend.o"))); in ConstructJob()
8254 Args.MakeArgString(getToolChain().GetFilePath("crtendS.o"))); in ConstructJob()
8257 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); in ConstructJob()
8264 const ArgList &Args, in ConstructJob() argument
8266 claimNoWarnArgs(Args); in ConstructJob()
8269 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
8277 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as")); in ConstructJob()
8284 const ArgList &Args, in ConstructJob() argument
8289 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_shared)) { in ConstructJob()
8294 if (Args.hasArg(options::OPT_static)) { in ConstructJob()
8297 if (Args.hasArg(options::OPT_rdynamic)) in ConstructJob()
8301 if (Args.hasArg(options::OPT_shared)) { in ConstructJob()
8316 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
8317 if (!Args.hasArg(options::OPT_shared)) { in ConstructJob()
8318 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
8320 Args.MakeArgString(getToolChain().GetFilePath("gcrt0.o"))); in ConstructJob()
8323 Args.MakeArgString(getToolChain().GetFilePath("crt0.o"))); in ConstructJob()
8325 Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); in ConstructJob()
8328 Args.MakeArgString(getToolChain().GetFilePath("crtbeginS.o"))); in ConstructJob()
8332 Args.AddAllArgs(CmdArgs, in ConstructJob()
8335 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); in ConstructJob()
8337 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
8339 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
8340 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
8346 if (Args.hasArg(options::OPT_pthread)) { in ConstructJob()
8347 if (!Args.hasArg(options::OPT_shared) && Args.hasArg(options::OPT_pg)) in ConstructJob()
8353 if (!Args.hasArg(options::OPT_shared)) { in ConstructJob()
8354 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
8374 CmdArgs.push_back(Args.MakeArgString("-lclang_rt." + MyArch)); in ConstructJob()
8377 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
8378 if (!Args.hasArg(options::OPT_shared)) in ConstructJob()
8380 Args.MakeArgString(getToolChain().GetFilePath("crtend.o"))); in ConstructJob()
8383 Args.MakeArgString(getToolChain().GetFilePath("crtendS.o"))); in ConstructJob()
8386 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); in ConstructJob()
8393 const ArgList &Args, in ConstructJob() argument
8395 claimNoWarnArgs(Args); in ConstructJob()
8415 mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName); in ConstructJob()
8429 if (Arg *A = Args.getLastArg(options::OPT_G)) { in ConstructJob()
8431 CmdArgs.push_back(Args.MakeArgString("-G" + v)); in ConstructJob()
8435 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
8442 arm::FloatABI ABI = arm::getARMFloatABI(getToolChain(), Args); in ConstructJob()
8464 std::string CPU = getCPUName(Args, getToolChain().getTriple()); in ConstructJob()
8466 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
8471 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
8479 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as")); in ConstructJob()
8486 const ArgList &Args, in ConstructJob() argument
8493 !Args.hasArg(options::OPT_shared) && in ConstructJob()
8494 (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault()); in ConstructJob()
8498 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
8500 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
8503 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
8506 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); in ConstructJob()
8512 if (Args.hasArg(options::OPT_static)) { in ConstructJob()
8515 if (Args.hasArg(options::OPT_rdynamic)) in ConstructJob()
8517 if (Args.hasArg(options::OPT_shared)) { in ConstructJob()
8544 if (Arg *A = Args.getLastArg(options::OPT_G)) { in ConstructJob()
8550 CmdArgs.push_back(Args.MakeArgString("-G" + v)); in ConstructJob()
8562 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
8564 if (!Args.hasArg(options::OPT_shared)) { in ConstructJob()
8565 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
8573 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crt1))); in ConstructJob()
8575 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o"))); in ConstructJob()
8578 if (Args.hasArg(options::OPT_static)) in ConstructJob()
8580 else if (Args.hasArg(options::OPT_shared) || IsPIE) in ConstructJob()
8585 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin))); in ConstructJob()
8588 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructJob()
8589 ToolChain.AddFilePathLibArgs(Args, CmdArgs); in ConstructJob()
8590 Args.AddAllArgs(CmdArgs, options::OPT_T_Group); in ConstructJob()
8591 Args.AddAllArgs(CmdArgs, options::OPT_e); in ConstructJob()
8592 Args.AddAllArgs(CmdArgs, options::OPT_s); in ConstructJob()
8593 Args.AddAllArgs(CmdArgs, options::OPT_t); in ConstructJob()
8594 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag); in ConstructJob()
8595 Args.AddAllArgs(CmdArgs, options::OPT_r); in ConstructJob()
8598 AddGoldPlugin(ToolChain, Args, CmdArgs, D.getLTOMode() == LTOK_Thin); in ConstructJob()
8600 bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs); in ConstructJob()
8601 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs); in ConstructJob()
8603 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
8604 addOpenMPRuntime(CmdArgs, ToolChain, Args); in ConstructJob()
8606 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
8607 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
8616 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
8620 if (Args.hasArg(options::OPT_static)) { in ConstructJob()
8622 } else if (Args.hasArg(options::OPT_pg)) { in ConstructJob()
8630 if (Args.hasArg(options::OPT_pthread)) { in ConstructJob()
8631 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
8637 if (Args.hasArg(options::OPT_pg)) { in ConstructJob()
8638 if (Args.hasArg(options::OPT_shared)) in ConstructJob()
8648 if (Args.hasArg(options::OPT_static)) { in ConstructJob()
8650 } else if (Args.hasArg(options::OPT_pg)) { in ConstructJob()
8659 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
8660 if (Args.hasArg(options::OPT_shared) || IsPIE) in ConstructJob()
8661 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtendS.o"))); in ConstructJob()
8663 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtend.o"))); in ConstructJob()
8664 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o"))); in ConstructJob()
8667 ToolChain.addProfileRTLibs(Args, CmdArgs); in ConstructJob()
8669 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); in ConstructJob()
8676 const ArgList &Args, in ConstructJob() argument
8678 claimNoWarnArgs(Args); in ConstructJob()
8692 getARMArchCPUFromArgs(Args, MArch, MCPU, /*FromAs*/ true); in ConstructJob()
8695 CmdArgs.push_back(Args.MakeArgString("-mcpu=" + Arch)); in ConstructJob()
8705 mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName); in ConstructJob()
8719 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
8726 std::string CPU = getCPUName(Args, getToolChain().getTriple()); in ConstructJob()
8728 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
8734 std::string CPU = getCPUName(Args, getToolChain().getTriple()); in ConstructJob()
8736 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
8744 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
8752 const char *Exec = Args.MakeArgString((getToolChain().GetProgramPath("as"))); in ConstructJob()
8759 const ArgList &Args, in ConstructJob() argument
8765 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); in ConstructJob()
8768 if (Args.hasArg(options::OPT_static)) { in ConstructJob()
8771 if (Args.hasArg(options::OPT_rdynamic)) in ConstructJob()
8773 if (Args.hasArg(options::OPT_shared)) { in ConstructJob()
8776 Args.AddAllArgs(CmdArgs, options::OPT_pie); in ConstructJob()
8809 Args, CmdArgs, in ConstructJob()
8810 llvm::Triple(getToolChain().ComputeEffectiveClangTriple(Args))); in ConstructJob()
8828 if (mips::hasMipsAbiArg(Args, "32")) { in ConstructJob()
8834 } else if (mips::hasMipsAbiArg(Args, "64")) { in ConstructJob()
8874 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
8875 if (!Args.hasArg(options::OPT_shared)) { in ConstructJob()
8877 Args.MakeArgString(getToolChain().GetFilePath("crt0.o"))); in ConstructJob()
8880 Args.MakeArgString(getToolChain().GetFilePath("crti.o"))); in ConstructJob()
8881 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie)) { in ConstructJob()
8883 Args.MakeArgString(getToolChain().GetFilePath("crtbeginS.o"))); in ConstructJob()
8886 Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); in ConstructJob()
8890 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructJob()
8891 Args.AddAllArgs(CmdArgs, options::OPT_T_Group); in ConstructJob()
8892 Args.AddAllArgs(CmdArgs, options::OPT_e); in ConstructJob()
8893 Args.AddAllArgs(CmdArgs, options::OPT_s); in ConstructJob()
8894 Args.AddAllArgs(CmdArgs, options::OPT_t); in ConstructJob()
8895 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag); in ConstructJob()
8896 Args.AddAllArgs(CmdArgs, options::OPT_r); in ConstructJob()
8898 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); in ConstructJob()
8924 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
8925 addOpenMPRuntime(CmdArgs, getToolChain(), Args); in ConstructJob()
8927 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
8930 if (Args.hasArg(options::OPT_pthread)) in ConstructJob()
8935 if (Args.hasArg(options::OPT_static)) { in ConstructJob()
8951 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
8952 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie)) in ConstructJob()
8954 Args.MakeArgString(getToolChain().GetFilePath("crtendS.o"))); in ConstructJob()
8957 Args.MakeArgString(getToolChain().GetFilePath("crtend.o"))); in ConstructJob()
8958 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o"))); in ConstructJob()
8961 getToolChain().addProfileRTLibs(Args, CmdArgs); in ConstructJob()
8963 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); in ConstructJob()
8970 const ArgList &Args, in ConstructJob() argument
8972 claimNoWarnArgs(Args); in ConstructJob()
8974 std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args); in ConstructJob()
8983 ParsePICArgs(getToolChain(), Triple, Args); in ConstructJob()
9018 std::string CPU = getCPUName(Args, getToolChain().getTriple()); in ConstructJob()
9020 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
9025 std::string CPU = getCPUName(Args, getToolChain().getTriple()); in ConstructJob()
9027 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
9046 switch (arm::getARMFloatABI(getToolChain(), Args)) { in ConstructJob()
9049 CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=soft")); in ConstructJob()
9052 CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=softfp")); in ConstructJob()
9055 CmdArgs.push_back(Args.MakeArgString("-mfloat-abi=hard")); in ConstructJob()
9059 Args.AddLastArg(CmdArgs, options::OPT_march_EQ); in ConstructJob()
9065 if ((A = Args.getLastArg(options::OPT_mcpu_EQ)) && in ConstructJob()
9069 Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ); in ConstructJob()
9070 Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ); in ConstructJob()
9079 mips::getMipsCPUAndABI(Args, getToolChain().getTriple(), CPUName, ABIName); in ConstructJob()
9103 if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) { in ConstructJob()
9105 CmdArgs.push_back(Args.MakeArgString("-mnan=2008")); in ConstructJob()
9109 if (Arg *A = Args.getLastArg(options::OPT_mfp32, options::OPT_mfpxx, in ConstructJob()
9112 A->render(Args, CmdArgs); in ConstructJob()
9114 Args, getToolChain().getTriple(), CPUName, ABIName, in ConstructJob()
9115 getMipsFloatABI(getToolChain().getDriver(), Args))) in ConstructJob()
9121 Args.getLastArg(options::OPT_mips16, options::OPT_mno_mips16)) { in ConstructJob()
9124 A->render(Args, CmdArgs); in ConstructJob()
9131 Args.AddLastArg(CmdArgs, options::OPT_mmicromips, in ConstructJob()
9133 Args.AddLastArg(CmdArgs, options::OPT_mdsp, options::OPT_mno_dsp); in ConstructJob()
9134 Args.AddLastArg(CmdArgs, options::OPT_mdspr2, options::OPT_mno_dspr2); in ConstructJob()
9136 if (Arg *A = Args.getLastArg(options::OPT_mmsa, options::OPT_mno_msa)) { in ConstructJob()
9140 CmdArgs.push_back(Args.MakeArgString("-mmsa")); in ConstructJob()
9143 Args.AddLastArg(CmdArgs, options::OPT_mhard_float, in ConstructJob()
9146 Args.AddLastArg(CmdArgs, options::OPT_mdouble_float, in ConstructJob()
9149 Args.AddLastArg(CmdArgs, options::OPT_modd_spreg, in ConstructJob()
9152 AddAssemblerKPIC(getToolChain(), Args, CmdArgs); in ConstructJob()
9158 StringRef CPUName = getSystemZTargetCPU(Args); in ConstructJob()
9159 CmdArgs.push_back(Args.MakeArgString("-march=" + CPUName)); in ConstructJob()
9164 Args.AddAllArgs(CmdArgs, options::OPT_I); in ConstructJob()
9165 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
9173 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as")); in ConstructJob()
9179 if (Args.hasArg(options::OPT_gsplit_dwarf) && in ConstructJob()
9181 SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output, in ConstructJob()
9182 SplitDebugName(Args, Inputs[0])); in ConstructJob()
9186 ArgStringList &CmdArgs, const ArgList &Args) { in AddLibgcc() argument
9190 bool StaticLibgcc = Args.hasArg(options::OPT_static_libgcc) || in AddLibgcc()
9191 Args.hasArg(options::OPT_static); in AddLibgcc()
9208 else if (!Args.hasArg(options::OPT_shared) && D.CCCIsCXX()) in AddLibgcc()
9221 ArgStringList &CmdArgs, const ArgList &Args) { in AddRunTimeLibs() argument
9223 ToolChain::RuntimeLibType RLT = TC.GetRuntimeLibType(Args); in AddRunTimeLibs()
9232 addClangRT(TC, Args, CmdArgs); in AddRunTimeLibs()
9241 if (Args.hasArg(options::OPT_rtlib_EQ)) { in AddRunTimeLibs()
9243 << Args.getLastArg(options::OPT_rtlib_EQ)->getValue() << "MSVC"; in AddRunTimeLibs()
9246 AddLibgcc(TC.getTriple(), D, CmdArgs, Args); in AddRunTimeLibs()
9251 static const char *getLDMOption(const llvm::Triple &T, const ArgList &Args) { in getLDMOption() argument
9283 if (mips::hasMipsAbiArg(Args, "n32")) in getLDMOption()
9287 if (mips::hasMipsAbiArg(Args, "n32")) in getLDMOption()
9304 const ArgList &Args, in ConstructJob() argument
9310 std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args); in ConstructJob()
9317 !Args.hasArg(options::OPT_shared) && !Args.hasArg(options::OPT_static) && in ConstructJob()
9318 (Args.hasArg(options::OPT_pie) || ToolChain.isPIEDefault()); in ConstructJob()
9326 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
9328 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
9331 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
9333 const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath()); in ConstructJob()
9338 CmdArgs.push_back(Args.MakeArgString(getToolChain().getTripleString())); in ConstructJob()
9342 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); in ConstructJob()
9347 if (Args.hasArg(options::OPT_rdynamic)) in ConstructJob()
9350 if (Args.hasArg(options::OPT_s)) in ConstructJob()
9354 arm::appendEBLinkFlags(Args, CmdArgs, Triple); in ConstructJob()
9359 if (!Args.hasArg(options::OPT_static)) { in ConstructJob()
9364 CmdArgs.push_back(getLDMOption(ToolChain.getTriple(), Args)); in ConstructJob()
9366 if (Args.hasArg(options::OPT_static)) { in ConstructJob()
9372 } else if (Args.hasArg(options::OPT_shared)) { in ConstructJob()
9376 if (!Args.hasArg(options::OPT_static)) { in ConstructJob()
9377 if (Args.hasArg(options::OPT_rdynamic)) in ConstructJob()
9380 if (!Args.hasArg(options::OPT_shared)) { in ConstructJob()
9382 D.DyldPrefix + ToolChain.getDynamicLinker(Args); in ConstructJob()
9384 CmdArgs.push_back(Args.MakeArgString(Loader)); in ConstructJob()
9391 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
9394 if (!Args.hasArg(options::OPT_shared)) { in ConstructJob()
9395 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
9403 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crt1))); in ConstructJob()
9405 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o"))); in ConstructJob()
9409 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt0.o"))); in ConstructJob()
9412 if (Args.hasArg(options::OPT_static)) in ConstructJob()
9414 else if (Args.hasArg(options::OPT_shared)) in ConstructJob()
9422 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin))); in ConstructJob()
9426 ToolChain.AddFastMathRuntimeIfAvailable(Args, CmdArgs); in ConstructJob()
9429 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructJob()
9430 Args.AddAllArgs(CmdArgs, options::OPT_u); in ConstructJob()
9432 ToolChain.AddFilePathLibArgs(Args, CmdArgs); in ConstructJob()
9435 AddGoldPlugin(ToolChain, Args, CmdArgs, D.getLTOMode() == LTOK_Thin); in ConstructJob()
9437 if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle)) in ConstructJob()
9440 bool NeedsSanitizerDeps = addSanitizerRuntimes(ToolChain, Args, CmdArgs); in ConstructJob()
9441 bool NeedsXRayDeps = addXRayRuntime(ToolChain, Args, CmdArgs); in ConstructJob()
9442 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs); in ConstructJob()
9444 getToolChain().addProfileRTLibs(Args, CmdArgs); in ConstructJob()
9447 !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
9448 bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) && in ConstructJob()
9449 !Args.hasArg(options::OPT_static); in ConstructJob()
9452 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
9458 Args.ClaimAllArgs(options::OPT_stdlib_EQ); in ConstructJob()
9460 if (!Args.hasArg(options::OPT_nostdlib)) { in ConstructJob()
9461 if (!Args.hasArg(options::OPT_nodefaultlibs)) { in ConstructJob()
9462 if (Args.hasArg(options::OPT_static)) in ConstructJob()
9469 linkXRayRuntimeDeps(ToolChain, Args, CmdArgs); in ConstructJob()
9471 bool WantPthread = Args.hasArg(options::OPT_pthread) || in ConstructJob()
9472 Args.hasArg(options::OPT_pthreads); in ConstructJob()
9474 if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ, in ConstructJob()
9481 switch (getOpenMPRuntime(ToolChain, Args)) { in ConstructJob()
9501 AddRunTimeLibs(ToolChain, D, CmdArgs, Args); in ConstructJob()
9506 if (Args.hasArg(options::OPT_fsplit_stack)) in ConstructJob()
9515 if (Args.hasArg(options::OPT_static)) in ConstructJob()
9518 AddRunTimeLibs(ToolChain, D, CmdArgs, Args); in ConstructJob()
9528 if (!Args.hasArg(options::OPT_nostartfiles) && !IsIAMCU) { in ConstructJob()
9530 if (Args.hasArg(options::OPT_shared)) in ConstructJob()
9538 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtend))); in ConstructJob()
9540 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o"))); in ConstructJob()
9554 const ArgList &Args, in ConstructJob() argument
9563 gnutools::Assembler::ConstructJob(C, JA, Output, NewInputs, Args, in ConstructJob()
9574 const ArgList &Args, in ConstructJob() argument
9582 !Args.hasArg(options::OPT_dynamic) && !Args.hasArg(options::OPT_shared); in ConstructJob()
9587 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
9589 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
9592 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
9595 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); in ConstructJob()
9597 if (Args.hasArg(options::OPT_rdynamic)) in ConstructJob()
9600 if (Args.hasArg(options::OPT_s)) in ConstructJob()
9625 else if (Args.hasArg(options::OPT_shared)) in ConstructJob()
9630 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
9631 if (!Args.hasArg(options::OPT_shared)) in ConstructJob()
9632 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crt1.o"))); in ConstructJob()
9633 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o"))); in ConstructJob()
9638 else if (Args.hasArg(options::OPT_shared)) in ConstructJob()
9642 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin))); in ConstructJob()
9645 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructJob()
9646 Args.AddAllArgs(CmdArgs, options::OPT_u); in ConstructJob()
9648 ToolChain.AddFilePathLibArgs(Args, CmdArgs); in ConstructJob()
9650 if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle)) in ConstructJob()
9653 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs); in ConstructJob()
9656 !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
9658 Args.hasArg(options::OPT_static_libstdcxx) && !IsStatic; in ConstructJob()
9661 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
9667 if (!Args.hasArg(options::OPT_nostdlib)) { in ConstructJob()
9668 if (!Args.hasArg(options::OPT_nodefaultlibs)) { in ConstructJob()
9674 if (Args.hasArg(options::OPT_pthread) || in ConstructJob()
9675 Args.hasArg(options::OPT_pthreads) || D.CCCIsCXX()) { in ConstructJob()
9703 if (!Args.hasArg(options::OPT_nostartfiles)) { in ConstructJob()
9705 if (Args.hasArg(options::OPT_shared)) in ConstructJob()
9710 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtend))); in ConstructJob()
9711 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o"))); in ConstructJob()
9715 const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath()); in ConstructJob()
9722 const ArgList &Args, in ConstructJob() argument
9724 claimNoWarnArgs(Args); in ConstructJob()
9727 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
9735 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as")); in ConstructJob()
9742 const ArgList &Args, in ConstructJob() argument
9754 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
9755 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crt1.o"))); in ConstructJob()
9756 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crti.o"))); in ConstructJob()
9758 Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); in ConstructJob()
9759 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o"))); in ConstructJob()
9762 Args.AddAllArgs(CmdArgs, in ConstructJob()
9765 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); in ConstructJob()
9767 getToolChain().addProfileRTLibs(Args, CmdArgs); in ConstructJob()
9769 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
9771 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
9776 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
9777 if (Args.hasArg(options::OPT_pthread)) in ConstructJob()
9783 Args.MakeArgString(getToolChain().GetFilePath("crtend.o"))); in ConstructJob()
9786 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); in ConstructJob()
9797 const ArgList &Args, in ConstructJob() argument
9799 claimNoWarnArgs(Args); in ConstructJob()
9807 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
9815 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as")); in ConstructJob()
9822 const ArgList &Args, in ConstructJob() argument
9828 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); in ConstructJob()
9831 if (Args.hasArg(options::OPT_static)) { in ConstructJob()
9834 if (Args.hasArg(options::OPT_rdynamic)) in ConstructJob()
9836 if (Args.hasArg(options::OPT_shared)) in ConstructJob()
9860 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
9861 if (!Args.hasArg(options::OPT_shared)) { in ConstructJob()
9862 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
9864 Args.MakeArgString(getToolChain().GetFilePath("gcrt1.o"))); in ConstructJob()
9866 if (Args.hasArg(options::OPT_pie)) in ConstructJob()
9868 Args.MakeArgString(getToolChain().GetFilePath("Scrt1.o"))); in ConstructJob()
9871 Args.MakeArgString(getToolChain().GetFilePath("crt1.o"))); in ConstructJob()
9874 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crti.o"))); in ConstructJob()
9875 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie)) in ConstructJob()
9877 Args.MakeArgString(getToolChain().GetFilePath("crtbeginS.o"))); in ConstructJob()
9880 Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o"))); in ConstructJob()
9883 Args.AddAllArgs(CmdArgs, in ConstructJob()
9886 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); in ConstructJob()
9888 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
9891 if (!Args.hasArg(options::OPT_static)) { in ConstructJob()
9897 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
9901 if (Args.hasArg(options::OPT_pthread)) in ConstructJob()
9904 if (!Args.hasArg(options::OPT_nolibc)) { in ConstructJob()
9908 if (Args.hasArg(options::OPT_static) || in ConstructJob()
9909 Args.hasArg(options::OPT_static_libgcc)) { in ConstructJob()
9913 if (Args.hasArg(options::OPT_shared_libgcc)) { in ConstructJob()
9915 if (!Args.hasArg(options::OPT_shared)) in ConstructJob()
9926 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
9927 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie)) in ConstructJob()
9929 Args.MakeArgString(getToolChain().GetFilePath("crtendS.o"))); in ConstructJob()
9932 Args.MakeArgString(getToolChain().GetFilePath("crtend.o"))); in ConstructJob()
9933 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath("crtn.o"))); in ConstructJob()
9936 getToolChain().addProfileRTLibs(Args, CmdArgs); in ConstructJob()
9938 const char *Exec = Args.MakeArgString(getToolChain().GetLinkerPath()); in ConstructJob()
9965 const ArgList &Args, in ConstructJob() argument
9973 Args.MakeArgString(std::string("-out:") + Output.getFilename())); in ConstructJob()
9975 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles) && in ConstructJob()
10003 Args.MakeArgString(std::string("-libpath:") + LibDir.c_str())); in ConstructJob()
10008 CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") + in ConstructJob()
10015 CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") + in ConstructJob()
10019 if (!C.getDriver().IsCLMode() && Args.hasArg(options::OPT_L)) in ConstructJob()
10020 for (const auto &LibPath : Args.getAllArgValues(options::OPT_L)) in ConstructJob()
10021 CmdArgs.push_back(Args.MakeArgString("-libpath:" + LibPath)); in ConstructJob()
10025 if (Args.hasArg(options::OPT_g_Group, options::OPT__SLASH_Z7, in ConstructJob()
10029 bool DLL = Args.hasArg(options::OPT__SLASH_LD, options::OPT__SLASH_LDd, in ConstructJob()
10032 CmdArgs.push_back(Args.MakeArgString("-dll")); in ConstructJob()
10036 CmdArgs.push_back(Args.MakeArgString(std::string("-implib:") + ImplibName)); in ConstructJob()
10040 CmdArgs.push_back(Args.MakeArgString("-debug")); in ConstructJob()
10041 CmdArgs.push_back(Args.MakeArgString("-incremental:no")); in ConstructJob()
10042 if (Args.hasArg(options::OPT__SLASH_MD, options::OPT__SLASH_MDd)) { in ConstructJob()
10044 CmdArgs.push_back(TC.getCompilerRTArgString(Args, Lib)); in ConstructJob()
10047 CmdArgs.push_back(Args.MakeArgString("-include:___asan_seh_interceptor")); in ConstructJob()
10049 CmdArgs.push_back(TC.getCompilerRTArgString(Args, "asan_dll_thunk")); in ConstructJob()
10052 CmdArgs.push_back(TC.getCompilerRTArgString(Args, Lib)); in ConstructJob()
10056 Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link); in ConstructJob()
10058 if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ, in ConstructJob()
10062 CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") + in ConstructJob()
10064 switch (getOpenMPRuntime(getToolChain(), Args)) { in ConstructJob()
10081 if (!Args.hasArg(options::OPT_nostdlib)) { in ConstructJob()
10082 AddRunTimeLibs(TC, TC.getDriver(), CmdArgs, Args); in ConstructJob()
10099 LinkLibArg = Args.MakeArgString(Lib); in ConstructJob()
10101 LinkLibArg = Args.MakeArgString(Lib + ".lib"); in ConstructJob()
10108 A.renderAsInput(Args, CmdArgs); in ConstructJob()
10111 TC.addProfileRTLibs(Args, CmdArgs); in ConstructJob()
10117 StringRef Linker = Args.getLastArgValue(options::OPT_fuse_ld_EQ, "link"); in ConstructJob()
10133 const char *Exec = Args.MakeArgString(linkPath); in ConstructJob()
10140 const ArgList &Args, in ConstructJob() argument
10142 C.addCommand(GetCommand(C, JA, Output, Inputs, Args, LinkingOutput)); in ConstructJob()
10147 const InputInfoList &Inputs, const ArgList &Args, in GetCommand() argument
10158 Args.AddAllArgs(CmdArgs, {options::OPT_D, options::OPT_U, options::OPT_I}); in GetCommand()
10161 if (Arg *A = Args.getLastArg(options::OPT_fbuiltin, options::OPT_fno_builtin)) in GetCommand()
10164 if (Arg *A = Args.getLastArg(options::OPT_O, options::OPT_O0)) { in GetCommand()
10179 if (Arg *A = Args.getLastArg(options::OPT_fomit_frame_pointer, in GetCommand()
10184 if (!Args.hasArg(options::OPT_fwritable_strings)) in GetCommand()
10190 if (Args.hasFlag(options::OPT__SLASH_GR_, options::OPT__SLASH_GR, in GetCommand()
10194 if (Args.hasFlag(options::OPT__SLASH_GS_, options::OPT__SLASH_GS, in GetCommand()
10198 if (Arg *A = Args.getLastArg(options::OPT_ffunction_sections, in GetCommand()
10203 if (Arg *A = Args.getLastArg(options::OPT_fdata_sections, in GetCommand()
10207 if (Args.hasArg(options::OPT_fsyntax_only)) in GetCommand()
10209 if (Args.hasArg(options::OPT_g_Flag, options::OPT_gline_tables_only, in GetCommand()
10214 Args.getAllArgValues(options::OPT_include); in GetCommand()
10216 CmdArgs.push_back(Args.MakeArgString(std::string("/FI") + Include)); in GetCommand()
10219 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_LD); in GetCommand()
10220 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_LDd); in GetCommand()
10221 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_GX); in GetCommand()
10222 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_GX_); in GetCommand()
10223 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_EH); in GetCommand()
10224 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_Zl); in GetCommand()
10227 if (Arg *A = Args.getLastArg(options::OPT__SLASH_MD, options::OPT__SLASH_MDd, in GetCommand()
10229 A->render(Args, CmdArgs); in GetCommand()
10233 Args.AddAllArgs(CmdArgs, options::OPT_UNKNOWN); in GetCommand()
10243 II.getInputArg().renderAsInput(Args, CmdArgs); in GetCommand()
10248 Args.MakeArgString(std::string("/Fo") + Output.getFilename()); in GetCommand()
10254 return llvm::make_unique<Command>(JA, *this, Args.MakeArgString(Exec), in GetCommand()
10262 const ArgList &Args, in ConstructJob() argument
10264 claimNoWarnArgs(Args); in ConstructJob()
10273 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
10281 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("as")); in ConstructJob()
10284 if (Args.hasArg(options::OPT_gsplit_dwarf)) in ConstructJob()
10285 SplitDebugInfo(getToolChain(), C, *this, JA, Args, Output, in ConstructJob()
10286 SplitDebugName(Args, Inputs[0])); in ConstructJob()
10289 void MinGW::Linker::AddLibGCC(const ArgList &Args, in AddLibGCC() argument
10291 if (Args.hasArg(options::OPT_mthreads)) in AddLibGCC()
10296 ToolChain::RuntimeLibType RLT = getToolChain().GetRuntimeLibType(Args); in AddLibGCC()
10298 bool Static = Args.hasArg(options::OPT_static_libgcc) || in AddLibGCC()
10299 Args.hasArg(options::OPT_static); in AddLibGCC()
10300 bool Shared = Args.hasArg(options::OPT_shared); in AddLibGCC()
10311 AddRunTimeLibs(getToolChain(), getToolChain().getDriver(), CmdArgs, Args); in AddLibGCC()
10322 const ArgList &Args, in ConstructJob() argument
10331 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
10333 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
10336 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
10338 StringRef LinkerName = Args.getLastArgValue(options::OPT_fuse_ld_EQ, "ld"); in ConstructJob()
10347 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); in ConstructJob()
10349 if (Args.hasArg(options::OPT_s)) in ConstructJob()
10360 if (Args.hasArg(options::OPT_mwindows)) { in ConstructJob()
10363 } else if (Args.hasArg(options::OPT_mconsole)) { in ConstructJob()
10368 if (Args.hasArg(options::OPT_static)) in ConstructJob()
10371 if (Args.hasArg(options::OPT_mdll)) in ConstructJob()
10373 else if (Args.hasArg(options::OPT_shared)) in ConstructJob()
10376 if (Args.hasArg(options::OPT_mdll) || Args.hasArg(options::OPT_shared)) { in ConstructJob()
10389 Args.AddAllArgs(CmdArgs, options::OPT_e); in ConstructJob()
10391 Args.AddLastArg(CmdArgs, options::OPT_r); in ConstructJob()
10392 Args.AddLastArg(CmdArgs, options::OPT_s); in ConstructJob()
10393 Args.AddLastArg(CmdArgs, options::OPT_t); in ConstructJob()
10394 Args.AddAllArgs(CmdArgs, options::OPT_u_Group); in ConstructJob()
10395 Args.AddLastArg(CmdArgs, options::OPT_Z_Flag); in ConstructJob()
10397 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
10398 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_mdll)) { in ConstructJob()
10399 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("dllcrt2.o"))); in ConstructJob()
10401 if (Args.hasArg(options::OPT_municode)) in ConstructJob()
10402 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crt2u.o"))); in ConstructJob()
10404 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crt2.o"))); in ConstructJob()
10406 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
10407 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("gcrt2.o"))); in ConstructJob()
10408 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtbegin.o"))); in ConstructJob()
10411 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructJob()
10412 TC.AddFilePathLibArgs(Args, CmdArgs); in ConstructJob()
10413 AddLinkerInputs(TC, Inputs, Args, CmdArgs); in ConstructJob()
10420 !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
10421 bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) && in ConstructJob()
10422 !Args.hasArg(options::OPT_static); in ConstructJob()
10425 TC.AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
10430 if (!Args.hasArg(options::OPT_nostdlib)) { in ConstructJob()
10431 if (!Args.hasArg(options::OPT_nodefaultlibs)) { in ConstructJob()
10432 if (Args.hasArg(options::OPT_static)) in ConstructJob()
10435 if (Args.hasArg(options::OPT_fstack_protector) || in ConstructJob()
10436 Args.hasArg(options::OPT_fstack_protector_strong) || in ConstructJob()
10437 Args.hasArg(options::OPT_fstack_protector_all)) { in ConstructJob()
10441 if (Args.hasArg(options::OPT_fopenmp)) in ConstructJob()
10444 AddLibGCC(Args, CmdArgs); in ConstructJob()
10446 if (Args.hasArg(options::OPT_pg)) in ConstructJob()
10449 if (Args.hasArg(options::OPT_pthread)) in ConstructJob()
10453 if (Args.hasArg(options::OPT_mwindows)) { in ConstructJob()
10462 if (Args.hasArg(options::OPT_static)) in ConstructJob()
10465 AddLibGCC(Args, CmdArgs); in ConstructJob()
10468 if (!Args.hasArg(options::OPT_nostartfiles)) { in ConstructJob()
10470 TC.AddFastMathRuntimeIfAvailable(Args, CmdArgs); in ConstructJob()
10472 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtend.o"))); in ConstructJob()
10475 const char *Exec = Args.MakeArgString(TC.GetProgramPath(LinkerName.data())); in ConstructJob()
10485 const ArgList &Args, in ConstructJob() argument
10487 claimNoWarnArgs(Args); in ConstructJob()
10495 if (Args.hasArg(options::OPT_v)) in ConstructJob()
10498 if (Arg *A = Args.getLastArg(options::OPT_g_Group)) in ConstructJob()
10502 if (Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm, in ConstructJob()
10506 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
10511 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("xcc")); in ConstructJob()
10518 const ArgList &Args, in ConstructJob() argument
10529 if (Args.hasArg(options::OPT_v)) in ConstructJob()
10533 if (Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions, in ConstructJob()
10537 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); in ConstructJob()
10539 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("xcc")); in ConstructJob()
10546 const ArgList &Args, in ConstructJob() argument
10548 claimNoWarnArgs(Args); in ConstructJob()
10568 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
10577 Exec = Args.MakeArgString(Assembler); in ConstructJob()
10585 const ArgList &Args, in ConstructJob() argument
10596 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
10598 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
10600 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
10604 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); in ConstructJob()
10606 if (Args.hasArg(options::OPT_pie)) in ConstructJob()
10608 if (Args.hasArg(options::OPT_rdynamic)) in ConstructJob()
10610 if (Args.hasArg(options::OPT_s)) in ConstructJob()
10631 if (Args.hasArg(options::OPT_shared)) { in ConstructJob()
10651 CmdArgs.push_back(Args.MakeArgString(EntryPoint)); in ConstructJob()
10655 CmdArgs.push_back(Args.hasArg(options::OPT_static) ? "-Bstatic" in ConstructJob()
10658 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
10660 CmdArgs.push_back(Args.MakeArgString(EntryPoint)); in ConstructJob()
10672 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_rdynamic)) { in ConstructJob()
10677 CmdArgs.push_back(Args.MakeArgString(ImpLib)); in ConstructJob()
10680 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructJob()
10685 Args.hasArg(options::OPT_shared) ? "crtbeginS.obj" : "crtbegin.obj"; in ConstructJob()
10686 CmdArgs.push_back(Args.MakeArgString(CRTPath + CRTBegin)); in ConstructJob()
10689 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructJob()
10690 TC.AddFilePathLibArgs(Args, CmdArgs); in ConstructJob()
10691 AddLinkerInputs(TC, Inputs, Args, CmdArgs); in ConstructJob()
10693 if (D.CCCIsCXX() && !Args.hasArg(options::OPT_nostdlib) && in ConstructJob()
10694 !Args.hasArg(options::OPT_nodefaultlibs)) { in ConstructJob()
10695 bool StaticCXX = Args.hasArg(options::OPT_static_libstdcxx) && in ConstructJob()
10696 !Args.hasArg(options::OPT_static); in ConstructJob()
10699 TC.AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructJob()
10704 if (!Args.hasArg(options::OPT_nostdlib)) { in ConstructJob()
10705 if (!Args.hasArg(options::OPT_nodefaultlibs)) { in ConstructJob()
10708 AddRunTimeLibs(TC, D, CmdArgs, Args); in ConstructJob()
10714 if (Args.hasArg(options::OPT_shared)) { in ConstructJob()
10715 CmdArgs.push_back(TC.getCompilerRTArgString(Args, "asan_dll_thunk")); in ConstructJob()
10718 CmdArgs.push_back(TC.getCompilerRTArgString(Args, Lib)); in ConstructJob()
10721 CmdArgs.push_back(Args.MakeArgString("--undefined")); in ConstructJob()
10722 CmdArgs.push_back(Args.MakeArgString(TC.getArch() == llvm::Triple::x86 in ConstructJob()
10728 Exec = Args.MakeArgString(TC.GetLinkerPath()); in ConstructJob()
10736 const ArgList &Args, in ConstructJob() argument
10745 Args.ClaimAllArgs(); in ConstructJob()
10757 Args.AddAllArgs(CmdArgs, {options::OPT_I_Group, options::OPT_clang_i_Group, in ConstructJob()
10769 if (Args.getLastArg(options::OPT_MF) && !Args.getLastArg(options::OPT_MT) && in ConstructJob()
10772 Arg *A = Args.getLastArg(options::OPT_o); in ConstructJob()
10775 CmdArgs.push_back(Args.MakeArgString(A->getValue())); in ConstructJob()
10784 Args.MakeArgString(getToolChain().GetProgramPath("moviCompile")); in ConstructJob()
10785 C.addCommand(llvm::make_unique<Command>(JA, *this, Args.MakeArgString(Exec), in ConstructJob()
10792 const ArgList &Args, in ConstructJob() argument
10802 const Arg *CPUArg = Args.getLastArg(options::OPT_mcpu_EQ); in ConstructJob()
10805 Args.MakeArgString("-cv:" + StringRef(CPUArg->getValue()))); in ConstructJob()
10808 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
10809 for (const Arg *A : Args.filtered(options::OPT_I, options::OPT_isystem)) { in ConstructJob()
10812 Args.MakeArgString(std::string("-i:") + A->getValue(0))); in ConstructJob()
10817 Args.MakeArgString(std::string("-o:") + Output.getFilename())); in ConstructJob()
10820 Args.MakeArgString(getToolChain().GetProgramPath("moviAsm")); in ConstructJob()
10821 C.addCommand(llvm::make_unique<Command>(JA, *this, Args.MakeArgString(Exec), in ConstructJob()
10828 const ArgList &Args, in ConstructJob() argument
10835 !Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles); in ConstructJob()
10837 !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs); in ConstructJob()
10849 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
10850 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
10851 Args.ClaimAllArgs(options::OPT_static_libgcc); in ConstructJob()
10853 if (Args.hasArg(options::OPT_s)) // Pass the 'strip' option. in ConstructJob()
10862 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crti.o"))); in ConstructJob()
10863 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtbegin.o"))); in ConstructJob()
10866 Args.AddAllArgs(CmdArgs, {options::OPT_L, options::OPT_T_Group, in ConstructJob()
10870 TC.AddFilePathLibArgs(Args, CmdArgs); in ConstructJob()
10872 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs); in ConstructJob()
10890 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtend.o"))); in ConstructJob()
10891 CmdArgs.push_back(Args.MakeArgString(TC.GetFilePath("crtn.o"))); in ConstructJob()
10895 Args.MakeArgString(TC.GetProgramPath("sparc-myriad-elf-ld")); in ConstructJob()
10896 C.addCommand(llvm::make_unique<Command>(JA, *this, Args.MakeArgString(Exec), in ConstructJob()
10903 const ArgList &Args, in ConstructJob() argument
10905 claimNoWarnArgs(Args); in ConstructJob()
10908 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA, options::OPT_Xassembler); in ConstructJob()
10919 Args.MakeArgString(getToolChain().GetProgramPath("orbis-as")); in ConstructJob()
10936 const ArgList &Args, in ConstructPS4LinkJob() argument
10944 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructPS4LinkJob()
10946 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructPS4LinkJob()
10949 Args.ClaimAllArgs(options::OPT_w); in ConstructPS4LinkJob()
10952 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); in ConstructPS4LinkJob()
10954 if (Args.hasArg(options::OPT_pie)) in ConstructPS4LinkJob()
10957 if (Args.hasArg(options::OPT_rdynamic)) in ConstructPS4LinkJob()
10959 if (Args.hasArg(options::OPT_shared)) in ConstructPS4LinkJob()
10971 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructPS4LinkJob()
10972 Args.AddAllArgs(CmdArgs, options::OPT_T_Group); in ConstructPS4LinkJob()
10973 Args.AddAllArgs(CmdArgs, options::OPT_e); in ConstructPS4LinkJob()
10974 Args.AddAllArgs(CmdArgs, options::OPT_s); in ConstructPS4LinkJob()
10975 Args.AddAllArgs(CmdArgs, options::OPT_t); in ConstructPS4LinkJob()
10976 Args.AddAllArgs(CmdArgs, options::OPT_r); in ConstructPS4LinkJob()
10978 if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle)) in ConstructPS4LinkJob()
10981 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs); in ConstructPS4LinkJob()
10983 if (Args.hasArg(options::OPT_pthread)) { in ConstructPS4LinkJob()
10987 const char *Exec = Args.MakeArgString(ToolChain.GetProgramPath("orbis-ld")); in ConstructPS4LinkJob()
10995 const ArgList &Args, in ConstructGoldLinkJob() argument
11003 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructGoldLinkJob()
11005 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructGoldLinkJob()
11008 Args.ClaimAllArgs(options::OPT_w); in ConstructGoldLinkJob()
11011 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot)); in ConstructGoldLinkJob()
11013 if (Args.hasArg(options::OPT_pie)) in ConstructGoldLinkJob()
11016 if (Args.hasArg(options::OPT_static)) { in ConstructGoldLinkJob()
11019 if (Args.hasArg(options::OPT_rdynamic)) in ConstructGoldLinkJob()
11022 if (Args.hasArg(options::OPT_shared)) { in ConstructGoldLinkJob()
11040 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructGoldLinkJob()
11042 if (!Args.hasArg(options::OPT_shared)) { in ConstructGoldLinkJob()
11043 if (Args.hasArg(options::OPT_pg)) in ConstructGoldLinkJob()
11045 else if (Args.hasArg(options::OPT_pie)) in ConstructGoldLinkJob()
11051 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crt1))); in ConstructGoldLinkJob()
11053 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o"))); in ConstructGoldLinkJob()
11056 if (Args.hasArg(options::OPT_static)) in ConstructGoldLinkJob()
11058 else if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie)) in ConstructGoldLinkJob()
11063 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin))); in ConstructGoldLinkJob()
11066 Args.AddAllArgs(CmdArgs, options::OPT_L); in ConstructGoldLinkJob()
11067 ToolChain.AddFilePathLibArgs(Args, CmdArgs); in ConstructGoldLinkJob()
11068 Args.AddAllArgs(CmdArgs, options::OPT_T_Group); in ConstructGoldLinkJob()
11069 Args.AddAllArgs(CmdArgs, options::OPT_e); in ConstructGoldLinkJob()
11070 Args.AddAllArgs(CmdArgs, options::OPT_s); in ConstructGoldLinkJob()
11071 Args.AddAllArgs(CmdArgs, options::OPT_t); in ConstructGoldLinkJob()
11072 Args.AddAllArgs(CmdArgs, options::OPT_r); in ConstructGoldLinkJob()
11074 if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle)) in ConstructGoldLinkJob()
11077 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs); in ConstructGoldLinkJob()
11079 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructGoldLinkJob()
11084 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs); in ConstructGoldLinkJob()
11085 if (Args.hasArg(options::OPT_pg)) in ConstructGoldLinkJob()
11092 if (Args.hasArg(options::OPT_pg)) in ConstructGoldLinkJob()
11096 if (Args.hasArg(options::OPT_static)) { in ConstructGoldLinkJob()
11098 } else if (Args.hasArg(options::OPT_pg)) { in ConstructGoldLinkJob()
11106 if (Args.hasArg(options::OPT_pthread)) { in ConstructGoldLinkJob()
11107 if (Args.hasArg(options::OPT_pg)) in ConstructGoldLinkJob()
11113 if (Args.hasArg(options::OPT_pg)) { in ConstructGoldLinkJob()
11114 if (Args.hasArg(options::OPT_shared)) in ConstructGoldLinkJob()
11117 if (Args.hasArg(options::OPT_static)) { in ConstructGoldLinkJob()
11128 if (Args.hasArg(options::OPT_static)) { in ConstructGoldLinkJob()
11139 if (Args.hasArg(options::OPT_static)) { in ConstructGoldLinkJob()
11141 } else if (Args.hasArg(options::OPT_pg)) { in ConstructGoldLinkJob()
11150 if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles)) { in ConstructGoldLinkJob()
11151 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie)) in ConstructGoldLinkJob()
11152 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtendS.o"))); in ConstructGoldLinkJob()
11154 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtend.o"))); in ConstructGoldLinkJob()
11155 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o"))); in ConstructGoldLinkJob()
11160 Args.MakeArgString(ToolChain.GetProgramPath("orbis-ld.gold")); in ConstructGoldLinkJob()
11162 Args.MakeArgString(ToolChain.GetProgramPath("orbis-ld")); in ConstructGoldLinkJob()
11171 const ArgList &Args, in ConstructJob() argument
11178 if (const Arg *A = Args.getLastArg(options::OPT_fuse_ld_EQ)) { in ConstructJob()
11189 PS4Linker = !Args.hasArg(options::OPT_shared); in ConstructJob()
11192 ConstructPS4LinkJob(*this, C, JA, Output, Inputs, Args, LinkingOutput); in ConstructJob()
11194 ConstructGoldLinkJob(*this, C, JA, Output, Inputs, Args, LinkingOutput); in ConstructJob()
11200 const ArgList &Args, in ConstructJob() argument
11207 Args.getAllArgValues(options::OPT_march_EQ); in ConstructJob()
11212 if (!Args.hasArg(options::OPT_no_cuda_version_check)) { in ConstructJob()
11219 if (Args.hasFlag(options::OPT_cuda_noopt_device_debug, in ConstructJob()
11226 } else if (Arg *A = Args.getLastArg(options::OPT_O_Group)) { in ConstructJob()
11250 CmdArgs.push_back(Args.MakeArgString(llvm::Twine("-O") + OOpt)); in ConstructJob()
11258 CmdArgs.push_back(Args.MakeArgString(gpu_arch)); in ConstructJob()
11260 CmdArgs.push_back(Args.MakeArgString(Output.getFilename())); in ConstructJob()
11262 CmdArgs.push_back(Args.MakeArgString(II.getFilename())); in ConstructJob()
11264 for (const auto& A : Args.getAllArgValues(options::OPT_Xcuda_ptxas)) in ConstructJob()
11265 CmdArgs.push_back(Args.MakeArgString(A)); in ConstructJob()
11267 const char *Exec = Args.MakeArgString(TC.GetProgramPath("ptxas")); in ConstructJob()
11277 const ArgList &Args, in ConstructJob() argument
11286 CmdArgs.push_back(Args.MakeArgString("--create")); in ConstructJob()
11287 CmdArgs.push_back(Args.MakeArgString(Output.getFilename())); in ConstructJob()
11297 CmdArgs.push_back(Args.MakeArgString(llvm::Twine("--image=profile=") + in ConstructJob()
11301 for (const auto& A : Args.getAllArgValues(options::OPT_Xcuda_fatbinary)) in ConstructJob()
11302 CmdArgs.push_back(Args.MakeArgString(A)); in ConstructJob()
11304 const char *Exec = Args.MakeArgString(TC.GetProgramPath("fatbinary")); in ConstructJob()