Lines Matching refs:Args
72 static void CheckPreprocessingOptions(const Driver &D, const ArgList &Args) { in CheckPreprocessingOptions() argument
73 if (Arg *A = Args.getLastArg(clang::driver::options::OPT_C, options::OPT_CC, in CheckPreprocessingOptions()
78 if (!Args.hasArg(options::OPT_E) && !Args.hasArg(options::OPT__SLASH_P) && in CheckPreprocessingOptions()
79 !Args.hasArg(options::OPT__SLASH_EP) && !D.CCCIsCPP()) { in CheckPreprocessingOptions()
81 << A->getBaseArg().getAsString(Args) in CheckPreprocessingOptions()
87 static void CheckCodeGenerationOptions(const Driver &D, const ArgList &Args) { in CheckCodeGenerationOptions() argument
89 if (Args.hasArg(options::OPT_static)) in CheckCodeGenerationOptions()
91 Args.getLastArg(options::OPT_dynamic, options::OPT_mdynamic_no_pic)) in CheckCodeGenerationOptions()
92 D.Diag(diag::err_drv_argument_not_allowed_with) << A->getAsString(Args) in CheckCodeGenerationOptions()
178 static void ParseMRecip(const Driver &D, const ArgList &Args, in ParseMRecip() argument
185 Arg *A = Args.getLastArg(options::OPT_mrecip, options::OPT_mrecip_EQ); in ParseMRecip()
192 OutStrings.push_back(Args.MakeArgString(Out + "all")); in ParseMRecip()
204 OutStrings.push_back(Args.MakeArgString(Out + Val)); in ParseMRecip()
277 Out = Args.MakeArgString(Out + Prefix + Val); in ParseMRecip()
279 Out = Args.MakeArgString(Out + ","); in ParseMRecip()
282 OutStrings.push_back(Args.MakeArgString(Out)); in ParseMRecip()
287 static void ParseMPreferVectorWidth(const Driver &D, const ArgList &Args, in ParseMPreferVectorWidth() argument
289 Arg *A = Args.getLastArg(options::OPT_mprefer_vector_width_EQ); in ParseMPreferVectorWidth()
302 CmdArgs.push_back(Args.MakeArgString("-mprefer-vector-width=" + Value)); in ParseMPreferVectorWidth()
327 static bool addExceptionArgs(const ArgList &Args, types::ID InputType, in addExceptionArgs() argument
336 Args.ClaimAllArgs(options::OPT_fexceptions); in addExceptionArgs()
337 Args.ClaimAllArgs(options::OPT_fno_exceptions); in addExceptionArgs()
338 Args.ClaimAllArgs(options::OPT_fobjc_exceptions); in addExceptionArgs()
339 Args.ClaimAllArgs(options::OPT_fno_objc_exceptions); in addExceptionArgs()
340 Args.ClaimAllArgs(options::OPT_fcxx_exceptions); in addExceptionArgs()
341 Args.ClaimAllArgs(options::OPT_fno_cxx_exceptions); in addExceptionArgs()
342 Args.ClaimAllArgs(options::OPT_fasync_exceptions); in addExceptionArgs()
343 Args.ClaimAllArgs(options::OPT_fno_async_exceptions); in addExceptionArgs()
348 bool EH = Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions, in addExceptionArgs()
353 bool EHa = Args.hasFlag(options::OPT_fasync_exceptions, in addExceptionArgs()
364 Args.hasFlag(options::OPT_fobjc_exceptions, in addExceptionArgs()
375 Arg *ExceptionArg = Args.getLastArg( in addExceptionArgs()
393 Args.AddLastArg(CmdArgs, options::OPT_fignore_exceptions); in addExceptionArgs()
395 Args.addOptInFlag(CmdArgs, options::OPT_fassume_nothrow_exception_dtor, in addExceptionArgs()
403 static bool ShouldEnableAutolink(const ArgList &Args, const ToolChain &TC, in ShouldEnableAutolink() argument
415 return Args.hasFlag(options::OPT_fautolink, options::OPT_fno_autolink, in ShouldEnableAutolink()
420 static const char *addDebugCompDirArg(const ArgList &Args, in addDebugCompDirArg() argument
423 if (Arg *A = Args.getLastArg(options::OPT_ffile_compilation_dir_EQ, in addDebugCompDirArg()
426 CmdArgs.push_back(Args.MakeArgString(Twine("-fdebug-compilation-dir=") + in addDebugCompDirArg()
429 A->render(Args, CmdArgs); in addDebugCompDirArg()
432 CmdArgs.push_back(Args.MakeArgString("-fdebug-compilation-dir=" + *CWD)); in addDebugCompDirArg()
438 static void addDebugObjectName(const ArgList &Args, ArgStringList &CmdArgs, in addDebugObjectName() argument
442 for (auto *Arg : Args.filtered(options::OPT_Xclang)) in addDebugObjectName()
446 if (Args.hasArg(options::OPT_object_file_name_EQ)) in addDebugObjectName()
468 Args.MakeArgString(Twine("-object-file-name=") + ObjFileNameForDebug)); in addDebugObjectName()
473 const ArgList &Args, ArgStringList &CmdArgs) { in addDebugPrefixMapArg() argument
478 CmdArgs.push_back(Args.MakeArgString("-fdebug-prefix-map=" + Map)); in addDebugPrefixMapArg()
481 for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ, in addDebugPrefixMapArg()
493 static void addMacroPrefixMapArg(const Driver &D, const ArgList &Args, in addMacroPrefixMapArg() argument
495 for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ, in addMacroPrefixMapArg()
502 CmdArgs.push_back(Args.MakeArgString("-fmacro-prefix-map=" + Map)); in addMacroPrefixMapArg()
508 static void addCoveragePrefixMapArg(const Driver &D, const ArgList &Args, in addCoveragePrefixMapArg() argument
510 for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ, in addCoveragePrefixMapArg()
517 CmdArgs.push_back(Args.MakeArgString("-fcoverage-prefix-map=" + Map)); in addCoveragePrefixMapArg()
525 static bool shouldEnableVectorizerAtOLevel(const ArgList &Args, bool isSlpVec) { in shouldEnableVectorizerAtOLevel() argument
526 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) { in shouldEnableVectorizerAtOLevel()
556 static void addDashXForInput(const ArgList &Args, const InputInfo &Input, in addDashXForInput() argument
560 if (Args.hasArg(options::OPT_verify_pch) && Input.getType() == types::TY_PCH) in addDashXForInput()
564 if (Args.hasArg(options::OPT_rewrite_objc)) in addDashXForInput()
588 const ArgList &Args, SanitizerArgs &SanArgs, in addPGOAndCoverageFlags() argument
591 auto *PGOGenerateArg = Args.getLastArg(options::OPT_fprofile_generate, in addPGOAndCoverageFlags()
598 auto *CSPGOGenerateArg = getLastCSProfileGenerateArg(Args); in addPGOAndCoverageFlags()
600 auto *ProfileGenerateArg = Args.getLastArg( in addPGOAndCoverageFlags()
613 auto *ProfileUseArg = getLastProfileUseArg(Args); in addPGOAndCoverageFlags()
630 if (Arg *ProfileSampleUseArg = getLastProfileSampleUseArg(Args)) in addPGOAndCoverageFlags()
638 CmdArgs.push_back(Args.MakeArgString(Twine("-fprofile-instrument-path=") + in addPGOAndCoverageFlags()
643 Args.hasFlag(options::OPT_frtlib_defaultlib, in addPGOAndCoverageFlags()
646 CmdArgs.push_back(Args.MakeArgString( in addPGOAndCoverageFlags()
647 "--dependent-lib=" + TC.getCompilerRTBasename(Args, "profile"))); in addPGOAndCoverageFlags()
664 Args.hasFlag(options::OPT_frtlib_defaultlib, in addPGOAndCoverageFlags()
667 CmdArgs.push_back(Args.MakeArgString( in addPGOAndCoverageFlags()
668 "--dependent-lib=" + TC.getCompilerRTBasename(Args, "profile"))); in addPGOAndCoverageFlags()
676 Args.MakeArgString(Twine("-fprofile-instrument-path=") + Path)); in addPGOAndCoverageFlags()
682 CmdArgs.push_back(Args.MakeArgString( in addPGOAndCoverageFlags()
693 Args.MakeArgString(Twine("-fprofile-instrument-use-path=") + Path)); in addPGOAndCoverageFlags()
697 bool EmitCovNotes = Args.hasFlag(options::OPT_ftest_coverage, in addPGOAndCoverageFlags()
699 Args.hasArg(options::OPT_coverage); in addPGOAndCoverageFlags()
700 bool EmitCovData = TC.needsGCovInstrumentation(Args); in addPGOAndCoverageFlags()
702 if (Args.hasFlag(options::OPT_fcoverage_mapping, in addPGOAndCoverageFlags()
712 if (Args.hasFlag(options::OPT_fmcdc_coverage, options::OPT_fno_mcdc_coverage, in addPGOAndCoverageFlags()
714 if (!Args.hasFlag(options::OPT_fcoverage_mapping, in addPGOAndCoverageFlags()
723 if (Arg *A = Args.getLastArg(options::OPT_ffile_compilation_dir_EQ, in addPGOAndCoverageFlags()
726 CmdArgs.push_back(Args.MakeArgString( in addPGOAndCoverageFlags()
729 A->render(Args, CmdArgs); in addPGOAndCoverageFlags()
732 CmdArgs.push_back(Args.MakeArgString("-fcoverage-compilation-dir=" + *CWD)); in addPGOAndCoverageFlags()
735 if (Args.hasArg(options::OPT_fprofile_exclude_files_EQ)) { in addPGOAndCoverageFlags()
736 auto *Arg = Args.getLastArg(options::OPT_fprofile_exclude_files_EQ); in addPGOAndCoverageFlags()
737 if (!Args.hasArg(options::OPT_coverage)) in addPGOAndCoverageFlags()
744 Args.MakeArgString(Twine("-fprofile-exclude-files=" + v))); in addPGOAndCoverageFlags()
747 if (Args.hasArg(options::OPT_fprofile_filter_files_EQ)) { in addPGOAndCoverageFlags()
748 auto *Arg = Args.getLastArg(options::OPT_fprofile_filter_files_EQ); in addPGOAndCoverageFlags()
749 if (!Args.hasArg(options::OPT_coverage)) in addPGOAndCoverageFlags()
755 CmdArgs.push_back(Args.MakeArgString(Twine("-fprofile-filter-files=" + v))); in addPGOAndCoverageFlags()
758 if (const auto *A = Args.getLastArg(options::OPT_fprofile_update_EQ)) { in addPGOAndCoverageFlags()
769 if (const auto *A = Args.getLastArg(options::OPT_fprofile_function_groups)) { in addPGOAndCoverageFlags()
772 D.Diag(diag::err_drv_invalid_int_value) << A->getAsString(Args) << Val; in addPGOAndCoverageFlags()
775 Args.getLastArg(options::OPT_fprofile_selected_function_group)) { in addPGOAndCoverageFlags()
779 D.Diag(diag::err_drv_invalid_int_value) << A->getAsString(Args) << Val; in addPGOAndCoverageFlags()
782 CmdArgs.push_back(Args.MakeArgString("-fprofile-function-groups=" + in addPGOAndCoverageFlags()
785 CmdArgs.push_back(Args.MakeArgString("-fprofile-selected-function-group=" + in addPGOAndCoverageFlags()
793 if (Args.hasArg(options::OPT_fprofile_arcs) || in addPGOAndCoverageFlags()
794 Args.hasArg(options::OPT_coverage)) in addPGOAndCoverageFlags()
795 FProfileDir = Args.getLastArg(options::OPT_fprofile_dir); in addPGOAndCoverageFlags()
799 (void)(Args.hasArg(options::OPT_c) || Args.hasArg(options::OPT_S)); in addPGOAndCoverageFlags()
806 if (Arg *DumpDir = Args.getLastArgNoClaim(options::OPT_dumpdir)) { in addPGOAndCoverageFlags()
824 Args.MakeArgString("-coverage-notes-file=" + CoverageFilename)); in addPGOAndCoverageFlags()
835 Args.MakeArgString("-coverage-data-file=" + CoverageFilename)); in addPGOAndCoverageFlags()
841 RenderDebugEnablingArgs(const ArgList &Args, ArgStringList &CmdArgs, in RenderDebugEnablingArgs() argument
848 Args.MakeArgString("-dwarf-version=" + Twine(DwarfVersion))); in RenderDebugEnablingArgs()
867 static bool checkDebugInfoOption(const Arg *A, const ArgList &Args, in checkDebugInfoOption() argument
873 << A->getAsString(Args) << TC.getTripleString(); in checkDebugInfoOption()
877 static void RenderDebugInfoCompressionArgs(const ArgList &Args, in RenderDebugInfoCompressionArgs() argument
881 const Arg *A = Args.getLastArg(options::OPT_gz_EQ); in RenderDebugInfoCompressionArgs()
884 if (checkDebugInfoOption(A, Args, D, TC)) { in RenderDebugInfoCompressionArgs()
891 Args.MakeArgString("--compress-debug-sections=" + Twine(Value))); in RenderDebugInfoCompressionArgs()
898 Args.MakeArgString("--compress-debug-sections=" + Twine(Value))); in RenderDebugInfoCompressionArgs()
910 const ArgList &Args, in handleAMDGPUCodeObjectVersionOptions() argument
918 if (haveAMDGPUCodeObjectVersionArgument(D, Args)) { in handleAMDGPUCodeObjectVersionOptions()
919 unsigned CodeObjVer = getAMDGPUCodeObjectVersion(D, Args); in handleAMDGPUCodeObjectVersionOptions()
921 Args.MakeArgString(Twine("--amdhsa-code-object-version=") + in handleAMDGPUCodeObjectVersionOptions()
927 Args.MakeArgString(Twine("-mcode-object-version=") + in handleAMDGPUCodeObjectVersionOptions()
972 const Driver &D, const ArgList &Args, in AddPreprocessingOptions() argument
978 CheckPreprocessingOptions(D, Args); in AddPreprocessingOptions()
980 Args.AddLastArg(CmdArgs, options::OPT_C); in AddPreprocessingOptions()
981 Args.AddLastArg(CmdArgs, options::OPT_CC); in AddPreprocessingOptions()
984 Arg *ArgM = Args.getLastArg(options::OPT_MM); in AddPreprocessingOptions()
986 ArgM = Args.getLastArg(options::OPT_M); in AddPreprocessingOptions()
987 Arg *ArgMD = Args.getLastArg(options::OPT_MMD); in AddPreprocessingOptions()
989 ArgMD = Args.getLastArg(options::OPT_MD); in AddPreprocessingOptions()
1000 if (Arg *MF = Args.getLastArg(options::OPT_MF)) { in AddPreprocessingOptions()
1008 DepFile = getDependencyFileName(Args, Inputs); in AddPreprocessingOptions()
1015 for (const Arg *A : Args.filtered(options::OPT_MT, options::OPT_MQ)) { in AddPreprocessingOptions()
1019 A->render(Args, CmdArgs); in AddPreprocessingOptions()
1024 CmdArgs.push_back(Args.MakeArgString(Quoted)); in AddPreprocessingOptions()
1034 Arg *OutputOpt = Args.getLastArg(options::OPT_o, options::OPT__SLASH_Fo); in AddPreprocessingOptions()
1043 DepTarget = Args.MakeArgString(llvm::sys::path::filename(P)); in AddPreprocessingOptions()
1049 CmdArgs.push_back(Args.MakeArgString(Quoted)); in AddPreprocessingOptions()
1056 !Args.hasArg(options::OPT_fno_module_file_deps)) || in AddPreprocessingOptions()
1057 Args.hasArg(options::OPT_fmodule_file_deps)) in AddPreprocessingOptions()
1061 if (Args.hasArg(options::OPT_MG)) { in AddPreprocessingOptions()
1068 Args.AddLastArg(CmdArgs, options::OPT_MP); in AddPreprocessingOptions()
1069 Args.AddLastArg(CmdArgs, options::OPT_MV); in AddPreprocessingOptions()
1076 getToolChain().AddCudaIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
1078 getToolChain().AddHIPIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
1083 !Args.hasArg(options::OPT_nostdinc) && in AddPreprocessingOptions()
1084 !Args.hasArg(options::OPT_nogpuinc) && in AddPreprocessingOptions()
1087 if (!Args.hasArg(options::OPT_nobuiltininc)) { in AddPreprocessingOptions()
1094 CmdArgs.push_back(Args.MakeArgString(P)); in AddPreprocessingOptions()
1108 const Arg *YcArg = Args.getLastArg(options::OPT__SLASH_Yc); in AddPreprocessingOptions()
1109 const Arg *YuArg = Args.getLastArg(options::OPT__SLASH_Yu); in AddPreprocessingOptions()
1112 CmdArgs.push_back(Args.MakeArgString("-building-pch-with-obj")); in AddPreprocessingOptions()
1115 if (Args.hasFlag(options::OPT_fpch_instantiate_templates, in AddPreprocessingOptions()
1117 CmdArgs.push_back(Args.MakeArgString("-fpch-instantiate-templates")); in AddPreprocessingOptions()
1123 CmdArgs.push_back(Args.MakeArgString(D.GetClPchPath( in AddPreprocessingOptions()
1130 CmdArgs.push_back(Args.MakeArgString( in AddPreprocessingOptions()
1134 Args.MakeArgString(Twine("-pch-through-header=") + ThroughHeader)); in AddPreprocessingOptions()
1140 for (const Arg *A : Args.filtered(options::OPT_clang_i_Group)) { in AddPreprocessingOptions()
1166 CmdArgs.push_back(Args.MakeArgString(P)); in AddPreprocessingOptions()
1171 << A->getAsString(Args); in AddPreprocessingOptions()
1191 A->render(Args, CmdArgs); in AddPreprocessingOptions()
1194 Args.addAllArgs(CmdArgs, in AddPreprocessingOptions()
1205 Args.AddAllArgValues(CmdArgs, options::OPT_Wp_COMMA, in AddPreprocessingOptions()
1209 if (Arg *A = Args.getLastArg(options::OPT_I_)) in AddPreprocessingOptions()
1210 D.Diag(diag::err_drv_I_dash_not_supported) << A->getAsString(Args); in AddPreprocessingOptions()
1216 if (!Args.hasArg(options::OPT_isysroot)) { in AddPreprocessingOptions()
1227 addDirectoryList(Args, CmdArgs, "-I", "CPATH"); in AddPreprocessingOptions()
1229 addDirectoryList(Args, CmdArgs, "-c-isystem", "C_INCLUDE_PATH"); in AddPreprocessingOptions()
1231 addDirectoryList(Args, CmdArgs, "-cxx-isystem", "CPLUS_INCLUDE_PATH"); in AddPreprocessingOptions()
1233 addDirectoryList(Args, CmdArgs, "-objc-isystem", "OBJC_INCLUDE_PATH"); in AddPreprocessingOptions()
1235 addDirectoryList(Args, CmdArgs, "-objcxx-isystem", "OBJCPLUS_INCLUDE_PATH"); in AddPreprocessingOptions()
1243 bool HasStdlibxxIsystem = Args.hasArg(options::OPT_stdlibxx_isystem); in AddPreprocessingOptions()
1246 [&Args, &CmdArgs, HasStdlibxxIsystem](const ToolChain &TC) { in AddPreprocessingOptions()
1247 HasStdlibxxIsystem ? TC.AddClangCXXStdlibIsystemArgs(Args, CmdArgs) in AddPreprocessingOptions()
1248 : TC.AddClangCXXStdlibIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
1256 if (!Args.hasArg(options::OPT_nostdinc) && in AddPreprocessingOptions()
1257 !Args.hasArg(options::OPT_nogpuinc) && in AddPreprocessingOptions()
1258 !Args.hasArg(options::OPT_nobuiltininc)) { in AddPreprocessingOptions()
1269 CmdArgs.push_back(Args.MakeArgString(P)); in AddPreprocessingOptions()
1277 CmdArgs.push_back(Args.MakeArgString(P)); in AddPreprocessingOptions()
1284 [&Args, &CmdArgs](const ToolChain &TC) { in AddPreprocessingOptions()
1285 TC.AddClangSystemIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
1289 getToolChain().AddIAMCUIncludeArgs(Args, CmdArgs); in AddPreprocessingOptions()
1292 addMacroPrefixMapArg(D, Args, CmdArgs); in AddPreprocessingOptions()
1293 addCoveragePrefixMapArg(D, Args, CmdArgs); in AddPreprocessingOptions()
1295 Args.AddLastArg(CmdArgs, options::OPT_ffile_reproducible, in AddPreprocessingOptions()
1300 CmdArgs.push_back(Args.MakeArgString(Epoch)); in AddPreprocessingOptions()
1303 Args.addOptInFlag(CmdArgs, options::OPT_fdefine_target_os_macros, in AddPreprocessingOptions()
1342 const ArgList &Args) { in hasMultipleInvocations() argument
1349 return Args.getAllArgValues(options::OPT_arch).size() > 1; in hasMultipleInvocations()
1352 static bool checkRemarksOptions(const Driver &D, const ArgList &Args, in checkRemarksOptions() argument
1357 bool hasMultipleInvocations = ::hasMultipleInvocations(Triple, Args); in checkRemarksOptions()
1359 Args.getLastArg(options::OPT_foptimization_record_file_EQ); in checkRemarksOptions()
1368 static void renderRemarksOptions(const ArgList &Args, ArgStringList &CmdArgs, in renderRemarksOptions() argument
1373 if (const Arg *A = Args.getLastArg(options::OPT_fsave_optimization_record_EQ)) in renderRemarksOptions()
1378 const Arg *A = Args.getLastArg(options::OPT_foptimization_record_file_EQ); in renderRemarksOptions()
1384 Args.getAllArgValues(options::OPT_arch).size() > 1; in renderRemarksOptions()
1388 if (Args.hasArg(options::OPT_c) || Args.hasArg(options::OPT_S)) { in renderRemarksOptions()
1389 if (Arg *FinalOutput = Args.getLastArg(options::OPT_o)) in renderRemarksOptions()
1436 CmdArgs.push_back(Args.MakeArgString(F)); in renderRemarksOptions()
1440 Args.getLastArg(options::OPT_foptimization_record_passes_EQ)) { in renderRemarksOptions()
1451 void AddAAPCSVolatileBitfieldArgs(const ArgList &Args, ArgStringList &CmdArgs) { in AddAAPCSVolatileBitfieldArgs() argument
1452 if (!Args.hasFlag(options::OPT_faapcs_bitfield_width, in AddAAPCSVolatileBitfieldArgs()
1456 if (Args.getLastArg(options::OPT_ForceAAPCSBitfieldLoad)) in AddAAPCSVolatileBitfieldArgs()
1462 const ArgList &Args, ArgStringList &CmdArgs) { in RenderARMABI() argument
1467 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) { in RenderARMABI()
1470 std::string CPU = getCPUName(D, Args, Triple, /*FromAs*/ false); in RenderARMABI()
1528 static void CollectARMPACBTIOptions(const ToolChain &TC, const ArgList &Args, in CollectARMPACBTIOptions() argument
1531 ? Args.getLastArg(options::OPT_msign_return_address_EQ, in CollectARMPACBTIOptions()
1533 : Args.getLastArg(options::OPT_mbranch_protection_EQ); in CollectARMPACBTIOptions()
1580 << "b-key" << A->getAsString(Args); in CollectARMPACBTIOptions()
1589 Args.MakeArgString(Twine("-msign-return-address=") + Scope)); in CollectARMPACBTIOptions()
1593 << A->getAsString(Args) << Triple.getTriple(); in CollectARMPACBTIOptions()
1595 Args.MakeArgString(Twine("-msign-return-address-key=") + Key)); in CollectARMPACBTIOptions()
1600 << A->getAsString(Args) << Triple.getTriple(); in CollectARMPACBTIOptions()
1602 Args.MakeArgString(Twine("-mbranch-protection-pauth-lr"))); in CollectARMPACBTIOptions()
1611 << A->getAsString(Args) << Triple.getTriple(); in CollectARMPACBTIOptions()
1616 void Clang::AddARMTargetArgs(const llvm::Triple &Triple, const ArgList &Args, in AddARMTargetArgs() argument
1618 RenderARMABI(getToolChain().getDriver(), Triple, Args, CmdArgs); in AddARMTargetArgs()
1621 arm::FloatABI ABI = arm::getARMFloatABI(getToolChain(), Args); in AddARMTargetArgs()
1640 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge, in AddARMTargetArgs()
1649 if (!Args.hasFlag(options::OPT_mimplicit_float, in AddARMTargetArgs()
1653 if (Args.getLastArg(options::OPT_mcmse)) in AddARMTargetArgs()
1656 AddAAPCSVolatileBitfieldArgs(Args, CmdArgs); in AddARMTargetArgs()
1659 CollectARMPACBTIOptions(getToolChain(), Args, CmdArgs, false /*isAArch64*/); in AddARMTargetArgs()
1665 const ArgList &Args, bool KernelOrKext, in RenderTargetOptions() argument
1670 getTargetFeatures(TC.getDriver(), EffectiveTriple, Args, CmdArgs, false); in RenderTargetOptions()
1682 AddARMTargetArgs(EffectiveTriple, Args, CmdArgs, KernelOrKext); in RenderTargetOptions()
1688 AddAArch64TargetArgs(Args, CmdArgs); in RenderTargetOptions()
1693 AddLoongArchTargetArgs(Args, CmdArgs); in RenderTargetOptions()
1700 AddMIPSTargetArgs(Args, CmdArgs); in RenderTargetOptions()
1707 AddPPCTargetArgs(Args, CmdArgs); in RenderTargetOptions()
1712 AddRISCVTargetArgs(Args, CmdArgs); in RenderTargetOptions()
1718 AddSparcTargetArgs(Args, CmdArgs); in RenderTargetOptions()
1722 AddSystemZTargetArgs(Args, CmdArgs); in RenderTargetOptions()
1727 AddX86TargetArgs(Args, CmdArgs); in RenderTargetOptions()
1731 AddLanaiTargetArgs(Args, CmdArgs); in RenderTargetOptions()
1735 AddHexagonTargetArgs(Args, CmdArgs); in RenderTargetOptions()
1740 AddWebAssemblyTargetArgs(Args, CmdArgs); in RenderTargetOptions()
1744 AddVETargetArgs(Args, CmdArgs); in RenderTargetOptions()
1750 void RenderAArch64ABI(const llvm::Triple &Triple, const ArgList &Args, in RenderAArch64ABI() argument
1753 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) in RenderAArch64ABI()
1767 void Clang::AddAArch64TargetArgs(const ArgList &Args, in AddAArch64TargetArgs() argument
1771 if (!Args.hasFlag(options::OPT_mred_zone, options::OPT_mno_red_zone, true) || in AddAArch64TargetArgs()
1772 Args.hasArg(options::OPT_mkernel) || in AddAArch64TargetArgs()
1773 Args.hasArg(options::OPT_fapple_kext)) in AddAArch64TargetArgs()
1776 if (!Args.hasFlag(options::OPT_mimplicit_float, in AddAArch64TargetArgs()
1780 RenderAArch64ABI(Triple, Args, CmdArgs); in AddAArch64TargetArgs()
1783 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge, in AddAArch64TargetArgs()
1793 CollectARMPACBTIOptions(getToolChain(), Args, CmdArgs, true /*isAArch64*/); in AddAArch64TargetArgs()
1796 handlePAuthABI(Args, CmdArgs); in AddAArch64TargetArgs()
1799 if (Arg *A = Args.getLastArg(options::OPT_msve_vector_bits_EQ)) { in AddAArch64TargetArgs()
1810 Args.MakeArgString("-mvscale-max=" + llvm::Twine(Bits / 128))); in AddAArch64TargetArgs()
1816 Args.MakeArgString("-mvscale-min=" + llvm::Twine(Bits / 128))); in AddAArch64TargetArgs()
1824 AddAAPCSVolatileBitfieldArgs(Args, CmdArgs); in AddAArch64TargetArgs()
1826 if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_mtune_EQ)) { in AddAArch64TargetArgs()
1829 CmdArgs.push_back(Args.MakeArgString(llvm::sys::getHostCPUName())); in AddAArch64TargetArgs()
1836 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_intrinsics, in AddAArch64TargetArgs()
1838 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_calls, in AddAArch64TargetArgs()
1840 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_returns, in AddAArch64TargetArgs()
1842 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_auth_traps, in AddAArch64TargetArgs()
1844 Args.addOptInFlag( in AddAArch64TargetArgs()
1847 Args.addOptInFlag( in AddAArch64TargetArgs()
1850 Args.addOptInFlag( in AddAArch64TargetArgs()
1853 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_init_fini, in AddAArch64TargetArgs()
1855 Args.addOptInFlag( in AddAArch64TargetArgs()
1859 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_indirect_gotos, in AddAArch64TargetArgs()
1863 void Clang::AddLoongArchTargetArgs(const ArgList &Args, in AddLoongArchTargetArgs() argument
1869 loongarch::getLoongArchABI(getToolChain().getDriver(), Args, Triple) in AddLoongArchTargetArgs()
1873 if (const Arg *A = Args.getLastArg(options::OPT_mtune_EQ)) { in AddLoongArchTargetArgs()
1877 CmdArgs.push_back(Args.MakeArgString(TuneCPU)); in AddLoongArchTargetArgs()
1881 void Clang::AddMIPSTargetArgs(const ArgList &Args, in AddMIPSTargetArgs() argument
1887 mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName); in AddMIPSTargetArgs()
1892 mips::FloatABI ABI = mips::getMipsFloatABI(D, Args, Triple); in AddMIPSTargetArgs()
1905 if (Arg *A = Args.getLastArg(options::OPT_mldc1_sdc1, in AddMIPSTargetArgs()
1913 if (Arg *A = Args.getLastArg(options::OPT_mcheck_zero_division, in AddMIPSTargetArgs()
1921 if (Args.getLastArg(options::OPT_mfix4300)) { in AddMIPSTargetArgs()
1926 if (Arg *A = Args.getLastArg(options::OPT_G)) { in AddMIPSTargetArgs()
1929 CmdArgs.push_back(Args.MakeArgString("-mips-ssection-threshold=" + v)); in AddMIPSTargetArgs()
1933 Arg *GPOpt = Args.getLastArg(options::OPT_mgpopt, options::OPT_mno_gpopt); in AddMIPSTargetArgs()
1935 Args.getLastArg(options::OPT_mabicalls, options::OPT_mno_abicalls); in AddMIPSTargetArgs()
1954 ParsePICArgs(getToolChain(), Args); in AddMIPSTargetArgs()
1965 Arg *LocalSData = Args.getLastArg(options::OPT_mlocal_sdata, in AddMIPSTargetArgs()
1967 Arg *ExternSData = Args.getLastArg(options::OPT_mextern_sdata, in AddMIPSTargetArgs()
1969 Arg *EmbeddedData = Args.getLastArg(options::OPT_membedded_data, in AddMIPSTargetArgs()
2007 if (Arg *A = Args.getLastArg(options::OPT_mcompact_branches_EQ)) { in AddMIPSTargetArgs()
2012 CmdArgs.push_back(Args.MakeArgString("-mips-compact-branches=" + Val)); in AddMIPSTargetArgs()
2020 if (Arg *A = Args.getLastArg(options::OPT_mrelax_pic_calls, in AddMIPSTargetArgs()
2029 void Clang::AddPPCTargetArgs(const ArgList &Args, in AddPPCTargetArgs() argument
2033 if (Args.getLastArg(options::OPT_mtune_EQ)) { in AddPPCTargetArgs()
2035 std::string CPU = ppc::getPPCTuneCPU(Args, T); in AddPPCTargetArgs()
2036 CmdArgs.push_back(Args.MakeArgString(CPU)); in AddPPCTargetArgs()
2060 for (const Arg *A : Args.filtered(options::OPT_mabi_EQ)) { in AddPPCTargetArgs()
2095 ppc::FloatABI FloatABI = ppc::getPPCFloatABI(D, Args); in AddPPCTargetArgs()
2114 static void SetRISCVSmallDataLimit(const ToolChain &TC, const ArgList &Args, in SetRISCVSmallDataLimit() argument
2121 if (Args.getLastArg(options::OPT_shared, options::OPT_fpic, in SetRISCVSmallDataLimit()
2125 if (Args.hasArg(options::OPT_G)) { in SetRISCVSmallDataLimit()
2128 } else if (Args.getLastArgValue(options::OPT_mcmodel_EQ) in SetRISCVSmallDataLimit()
2133 if (Args.hasArg(options::OPT_G)) { in SetRISCVSmallDataLimit()
2139 if (Args.hasArg(options::OPT_G)) { in SetRISCVSmallDataLimit()
2142 } else if (Arg *A = Args.getLastArg(options::OPT_G)) { in SetRISCVSmallDataLimit()
2150 void Clang::AddRISCVTargetArgs(const ArgList &Args, in AddRISCVTargetArgs() argument
2153 StringRef ABIName = riscv::getRISCVABI(Args, Triple); in AddRISCVTargetArgs()
2158 SetRISCVSmallDataLimit(getToolChain(), Args, CmdArgs); in AddRISCVTargetArgs()
2160 if (!Args.hasFlag(options::OPT_mimplicit_float, in AddRISCVTargetArgs()
2164 if (const Arg *A = Args.getLastArg(options::OPT_mtune_EQ)) { in AddRISCVTargetArgs()
2167 CmdArgs.push_back(Args.MakeArgString(llvm::sys::getHostCPUName())); in AddRISCVTargetArgs()
2173 if (Arg *A = Args.getLastArg(options::OPT_mrvv_vector_bits_EQ)) { in AddRISCVTargetArgs()
2179 std::string Arch = riscv::getRISCVArch(Args, Triple); in AddRISCVTargetArgs()
2203 Args.MakeArgString("-mvscale-max=" + llvm::Twine(VScaleMin))); in AddRISCVTargetArgs()
2205 Args.MakeArgString("-mvscale-min=" + llvm::Twine(VScaleMin))); in AddRISCVTargetArgs()
2214 void Clang::AddSparcTargetArgs(const ArgList &Args, in AddSparcTargetArgs() argument
2217 sparc::getSparcFloatABI(getToolChain().getDriver(), Args); in AddSparcTargetArgs()
2231 if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_mtune_EQ)) { in AddSparcTargetArgs()
2240 CmdArgs.push_back(Args.MakeArgString(TuneCPU)); in AddSparcTargetArgs()
2244 void Clang::AddSystemZTargetArgs(const ArgList &Args, in AddSystemZTargetArgs() argument
2246 if (const Arg *A = Args.getLastArg(options::OPT_mtune_EQ)) { in AddSystemZTargetArgs()
2249 CmdArgs.push_back(Args.MakeArgString(llvm::sys::getHostCPUName())); in AddSystemZTargetArgs()
2255 Args.hasFlag(options::OPT_mbackchain, options::OPT_mno_backchain, false); in AddSystemZTargetArgs()
2256 bool HasPackedStack = Args.hasFlag(options::OPT_mpacked_stack, in AddSystemZTargetArgs()
2259 systemz::getSystemZFloatABI(getToolChain().getDriver(), Args); in AddSystemZTargetArgs()
2278 void Clang::AddX86TargetArgs(const ArgList &Args, in AddX86TargetArgs() argument
2281 addX86AlignBranchArgs(D, Args, CmdArgs, /*IsLTO=*/false); in AddX86TargetArgs()
2283 if (!Args.hasFlag(options::OPT_mred_zone, options::OPT_mno_red_zone, true) || in AddX86TargetArgs()
2284 Args.hasArg(options::OPT_mkernel) || in AddX86TargetArgs()
2285 Args.hasArg(options::OPT_fapple_kext)) in AddX86TargetArgs()
2288 if (!Args.hasFlag(options::OPT_mtls_direct_seg_refs, in AddX86TargetArgs()
2294 bool NoImplicitFloat = (Args.hasArg(options::OPT_mkernel) || in AddX86TargetArgs()
2295 Args.hasArg(options::OPT_fapple_kext)); in AddX86TargetArgs()
2296 if (Arg *A = Args.getLastArg( in AddX86TargetArgs()
2306 if (Arg *A = Args.getLastArg(options::OPT_masm_EQ)) { in AddX86TargetArgs()
2310 CmdArgs.push_back(Args.MakeArgString("-x86-asm-syntax=" + Value)); in AddX86TargetArgs()
2311 CmdArgs.push_back(Args.MakeArgString("-inline-asm=" + Value)); in AddX86TargetArgs()
2321 if (Arg *A = Args.getLastArg(options::OPT_mskip_rax_setup, in AddX86TargetArgs()
2324 CmdArgs.push_back(Args.MakeArgString("-mskip-rax-setup")); in AddX86TargetArgs()
2327 if (Args.hasFlag(options::OPT_miamcu, options::OPT_mno_iamcu, false)) { in AddX86TargetArgs()
2337 if (!Args.hasArg(clang::driver::options::OPT_march_EQ) && in AddX86TargetArgs()
2342 if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_mtune_EQ)) { in AddX86TargetArgs()
2355 CmdArgs.push_back(Args.MakeArgString(TuneCPU)); in AddX86TargetArgs()
2359 void Clang::AddHexagonTargetArgs(const ArgList &Args, in AddHexagonTargetArgs() argument
2364 if (auto G = toolchains::HexagonToolChain::getSmallDataThreshold(Args)) { in AddHexagonTargetArgs()
2367 Args.MakeArgString("-hexagon-small-data-threshold=" + Twine(*G))); in AddHexagonTargetArgs()
2370 if (!Args.hasArg(options::OPT_fno_short_enums)) in AddHexagonTargetArgs()
2372 if (Args.getLastArg(options::OPT_mieee_rnd_near)) { in AddHexagonTargetArgs()
2380 void Clang::AddLanaiTargetArgs(const ArgList &Args, in AddLanaiTargetArgs() argument
2382 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { in AddLanaiTargetArgs()
2386 CmdArgs.push_back(Args.MakeArgString(CPUName)); in AddLanaiTargetArgs()
2388 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) { in AddLanaiTargetArgs()
2403 void Clang::AddWebAssemblyTargetArgs(const ArgList &Args, in AddWebAssemblyTargetArgs() argument
2406 if (!Args.hasArg(options::OPT_fvisibility_EQ, in AddWebAssemblyTargetArgs()
2411 void Clang::AddVETargetArgs(const ArgList &Args, ArgStringList &CmdArgs) const { in AddVETargetArgs() argument
2419 const InputInfo &Input, const ArgList &Args) const { in DumpCompilationDatabase()
2452 if (!D.SysRoot.empty() && !Args.hasArg(options::OPT__sysroot_EQ)) { in DumpCompilationDatabase()
2460 for (auto &A: Args) { in DumpCompilationDatabase()
2478 A->render(Args, ASL); in DumpCompilationDatabase()
2489 const InputInfo &Input, const llvm::opt::ArgList &Args) const { in DumpCompilationDatabaseFragmentToDir()
2495 DumpCompilationDatabase(C, "", Target, Output, Input, Args); in DumpCompilationDatabaseFragmentToDir()
2519 DumpCompilationDatabase(C, "", Target, Output, Input, Args); in DumpCompilationDatabaseFragmentToDir()
2527 static void AddARMImplicitITArgs(const ArgList &Args, ArgStringList &CmdArgs, in AddARMImplicitITArgs() argument
2530 CmdArgs.push_back(Args.MakeArgString("-arm-implicit-it=" + Value)); in AddARMImplicitITArgs()
2534 const ArgList &Args, in CollectArgsForIntegratedAssembler() argument
2545 Args.addOptInFlag(CmdArgs, options::OPT_mrelax_all, in CollectArgsForIntegratedAssembler()
2552 if (Args.hasFlag(options::OPT_mincremental_linker_compatible, in CollectArgsForIntegratedAssembler()
2557 Args.AddLastArg(CmdArgs, options::OPT_femit_dwarf_unwind_EQ); in CollectArgsForIntegratedAssembler()
2559 Args.addOptInFlag(CmdArgs, options::OPT_femit_compact_unwind_non_canonical, in CollectArgsForIntegratedAssembler()
2579 Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler, in CollectArgsForIntegratedAssembler()
2728 RenderDebugEnablingArgs(Args, CmdArgs, in CollectArgsForIntegratedAssembler()
2774 AddARMImplicitITArgs(Args, CmdArgs, ImplicitIt); in CollectArgsForIntegratedAssembler()
2797 Args.AddLastArg(CmdArgs, options::OPT_fembed_bitcode_EQ); in CollectArgsForIntegratedAssembler()
2801 CmdArgs.push_back(Args.MakeArgString(AsSecureLogFile)); in CollectArgsForIntegratedAssembler()
2846 bool OFastEnabled, const ArgList &Args, in RenderFloatingPointOptions() argument
2873 TC.getDefaultDenormalModeForType(Args, JA); in RenderFloatingPointOptions()
2875 TC.getDefaultDenormalModeForType(Args, JA, &llvm::APFloat::IEEEsingle()); in RenderFloatingPointOptions()
2922 if (const Arg *A = Args.getLastArg(options::OPT_flimited_precision_EQ)) { in RenderFloatingPointOptions()
2927 for (const Arg *A : Args) { in RenderFloatingPointOptions()
3029 << Args.MakeArgString("-ffp-model=" + Val) << "-Ofast"; in RenderFloatingPointOptions()
3035 << Args.MakeArgString("-ffp-model=" + FPModel) in RenderFloatingPointOptions()
3036 << Args.MakeArgString("-ffp-model=" + Val); in RenderFloatingPointOptions()
3076 << Args.MakeArgString("-ffp-exception-behavior=" + in RenderFloatingPointOptions()
3088 << Args.MakeArgString("-ffp-exception-behavior=" + in RenderFloatingPointOptions()
3109 << A->getAsString(Args) << A->getValue(); in RenderFloatingPointOptions()
3117 << A->getAsString(Args) << A->getValue(); in RenderFloatingPointOptions()
3141 << Args.MakeArgString("-ffp-exception-behavior=" + in RenderFloatingPointOptions()
3143 << Args.MakeArgString("-ffp-exception-behavior=" + Val); in RenderFloatingPointOptions()
3272 : Args.MakeArgString(A->getSpelling() + A->getValue()); in RenderFloatingPointOptions()
3318 CmdArgs.push_back(Args.MakeArgString(ArgStr.str())); in RenderFloatingPointOptions()
3326 CmdArgs.push_back(Args.MakeArgString(ArgStr.str())); in RenderFloatingPointOptions()
3330 CmdArgs.push_back(Args.MakeArgString("-ffp-contract=" + FPContract)); in RenderFloatingPointOptions()
3333 CmdArgs.push_back(Args.MakeArgString("-frounding-math")); in RenderFloatingPointOptions()
3335 CmdArgs.push_back(Args.MakeArgString("-fno-rounding-math")); in RenderFloatingPointOptions()
3338 CmdArgs.push_back(Args.MakeArgString("-ffp-exception-behavior=" + in RenderFloatingPointOptions()
3342 CmdArgs.push_back(Args.MakeArgString("-ffp-eval-method=" + FPEvalMethod)); in RenderFloatingPointOptions()
3345 CmdArgs.push_back(Args.MakeArgString("-ffloat16-excess-precision=" + in RenderFloatingPointOptions()
3348 CmdArgs.push_back(Args.MakeArgString("-fbfloat16-excess-precision=" + in RenderFloatingPointOptions()
3351 ParseMRecip(D, Args, CmdArgs); in RenderFloatingPointOptions()
3365 CmdArgs.push_back(Args.MakeArgString("-ffp-contract=fast")); in RenderFloatingPointOptions()
3369 << Args.MakeArgString("-ffp-contract=" + FPContract); in RenderFloatingPointOptions()
3377 if (const Arg *A = Args.getLastArg(options::OPT_mfpmath_EQ)) { in RenderFloatingPointOptions()
3383 if (Args.hasFlag(options::OPT_fno_strict_float_cast_overflow, in RenderFloatingPointOptions()
3390 CmdArgs.push_back(Args.MakeArgString(ComplexRangeStr)); in RenderFloatingPointOptions()
3391 if (Args.hasArg(options::OPT_fcomplex_arithmetic_EQ)) in RenderFloatingPointOptions()
3392 CmdArgs.push_back(Args.MakeArgString("-fcomplex-arithmetic=" + in RenderFloatingPointOptions()
3395 if (Args.hasArg(options::OPT_fcx_limited_range)) in RenderFloatingPointOptions()
3397 if (Args.hasArg(options::OPT_fcx_fortran_rules)) in RenderFloatingPointOptions()
3399 if (Args.hasArg(options::OPT_fno_cx_limited_range)) in RenderFloatingPointOptions()
3401 if (Args.hasArg(options::OPT_fno_cx_fortran_rules)) in RenderFloatingPointOptions()
3405 static void RenderAnalyzerOptions(const ArgList &Args, ArgStringList &CmdArgs, in RenderAnalyzerOptions() argument
3409 if (!Args.hasArg(options::OPT__analyzer_no_default_checks)) { in RenderAnalyzerOptions()
3460 if (Arg *A = Args.getLastArg(options::OPT__analyzer_output)) in RenderAnalyzerOptions()
3471 Args.AddAllArgValues(CmdArgs, options::OPT_Xanalyzer); in RenderAnalyzerOptions()
3485 const ArgList &Args, ArgStringList &CmdArgs, in RenderSSPOptions() argument
3499 if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector, in RenderSSPOptions()
3522 CmdArgs.push_back(Args.MakeArgString(Twine(StackProtectorLevel))); in RenderSSPOptions()
3526 for (const Arg *A : Args.filtered(options::OPT__param)) { in RenderSSPOptions()
3532 CmdArgs.push_back(Args.MakeArgString(Str.drop_front(16))); in RenderSSPOptions()
3539 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_EQ)) { in RenderSSPOptions()
3544 << A->getAsString(Args) << TripleStr; in RenderSSPOptions()
3554 if (!Args.hasArg(options::OPT_mstack_protector_guard_offset_EQ)) { in RenderSSPOptions()
3556 << A->getAsString(Args); in RenderSSPOptions()
3566 if (Arg *A = Args.getLastArg(options::OPT_mtp_mode_EQ)) { in RenderSSPOptions()
3570 << A->getAsString(Args) << "-mstack-protector-guard=tls"; in RenderSSPOptions()
3582 A->render(Args, CmdArgs); in RenderSSPOptions()
3585 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_offset_EQ)) { in RenderSSPOptions()
3590 << A->getAsString(Args) << TripleStr; in RenderSSPOptions()
3602 A->render(Args, CmdArgs); in RenderSSPOptions()
3605 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_reg_EQ)) { in RenderSSPOptions()
3609 << A->getAsString(Args) << TripleStr; in RenderSSPOptions()
3619 A->render(Args, CmdArgs); in RenderSSPOptions()
3622 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_symbol_EQ)) { in RenderSSPOptions()
3629 A->render(Args, CmdArgs); in RenderSSPOptions()
3633 static void RenderSCPOptions(const ToolChain &TC, const ArgList &Args, in RenderSCPOptions() argument
3644 Args.addOptInFlag(CmdArgs, options::OPT_fstack_clash_protection, in RenderSCPOptions()
3650 const ArgList &Args, in RenderTrivialAutoVarInitOptions() argument
3655 for (const Arg *A : Args) { in RenderTrivialAutoVarInitOptions()
3686 Args.MakeArgString("-ftrivial-auto-var-init=" + TrivialAutoVarInit)); in RenderTrivialAutoVarInitOptions()
3690 Args.getLastArg(options::OPT_ftrivial_auto_var_init_stop_after)) { in RenderTrivialAutoVarInitOptions()
3691 if (!Args.hasArg(options::OPT_ftrivial_auto_var_init) || in RenderTrivialAutoVarInitOptions()
3693 Args.getLastArg(options::OPT_ftrivial_auto_var_init)->getValue()) == in RenderTrivialAutoVarInitOptions()
3701 Args.MakeArgString("-ftrivial-auto-var-init-stop-after=" + Val)); in RenderTrivialAutoVarInitOptions()
3704 if (Arg *A = Args.getLastArg(options::OPT_ftrivial_auto_var_init_max_size)) { in RenderTrivialAutoVarInitOptions()
3705 if (!Args.hasArg(options::OPT_ftrivial_auto_var_init) || in RenderTrivialAutoVarInitOptions()
3707 Args.getLastArg(options::OPT_ftrivial_auto_var_init)->getValue()) == in RenderTrivialAutoVarInitOptions()
3715 Args.MakeArgString("-ftrivial-auto-var-init-max-size=" + Val)); in RenderTrivialAutoVarInitOptions()
3719 static void RenderOpenCLOptions(const ArgList &Args, ArgStringList &CmdArgs, in RenderOpenCLOptions() argument
3737 if (Arg *A = Args.getLastArg(options::OPT_cl_std_EQ)) { in RenderOpenCLOptions()
3739 CmdArgs.push_back(Args.MakeArgString(CLStdStr)); in RenderOpenCLOptions()
3740 } else if (Arg *A = Args.getLastArg(options::OPT_cl_ext_EQ)) { in RenderOpenCLOptions()
3742 CmdArgs.push_back(Args.MakeArgString(CLExtStr)); in RenderOpenCLOptions()
3746 if (const auto *A = Args.getLastArg(Arg)) in RenderOpenCLOptions()
3747 CmdArgs.push_back(Args.MakeArgString(A->getOption().getPrefixedName())); in RenderOpenCLOptions()
3751 (Args.hasArg(options::OPT_cl_std_EQ) && types::isSrcFile(InputType))) && in RenderOpenCLOptions()
3752 !Args.hasArg(options::OPT_cl_no_stdinc)) { in RenderOpenCLOptions()
3758 static void RenderHLSLOptions(const ArgList &Args, ArgStringList &CmdArgs, in RenderHLSLOptions() argument
3772 if (const auto *A = Args.getLastArg(Arg)) in RenderHLSLOptions()
3773 A->renderAsInput(Args, CmdArgs); in RenderHLSLOptions()
3775 if (!Args.hasArg(options::OPT_dxc_no_stdinc) && in RenderHLSLOptions()
3776 !Args.hasArg(options::OPT_nostdinc)) in RenderHLSLOptions()
3780 static void RenderOpenACCOptions(const Driver &D, const ArgList &Args, in RenderOpenACCOptions() argument
3782 if (!Args.hasArg(options::OPT_fopenacc)) in RenderOpenACCOptions()
3787 if (Arg *A = Args.getLastArg(options::OPT_openacc_macro_override)) { in RenderOpenACCOptions()
3791 A->renderAsInput(Args, CmdArgs); in RenderOpenACCOptions()
3797 static void RenderARCMigrateToolOptions(const Driver &D, const ArgList &Args, in RenderARCMigrateToolOptions() argument
3800 if (!Args.hasArg(options::OPT_fno_objc_arc, options::OPT_fobjc_arc)) { in RenderARCMigrateToolOptions()
3801 if (const Arg *A = Args.getLastArg(options::OPT_ccc_arcmt_check, in RenderARCMigrateToolOptions()
3818 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_report_output); in RenderARCMigrateToolOptions()
3819 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_emit_arc_errors); in RenderARCMigrateToolOptions()
3824 Args.ClaimAllArgs(options::OPT_ccc_arcmt_check); in RenderARCMigrateToolOptions()
3825 Args.ClaimAllArgs(options::OPT_ccc_arcmt_modify); in RenderARCMigrateToolOptions()
3826 Args.ClaimAllArgs(options::OPT_ccc_arcmt_migrate); in RenderARCMigrateToolOptions()
3829 if (const Arg *A = Args.getLastArg(options::OPT_ccc_objcmt_migrate)) { in RenderARCMigrateToolOptions()
3832 << A->getAsString(Args) << "-ccc-arcmt-migrate"; in RenderARCMigrateToolOptions()
3837 if (!Args.hasArg(options::OPT_objcmt_migrate_literals, in RenderARCMigrateToolOptions()
3845 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals); in RenderARCMigrateToolOptions()
3846 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting); in RenderARCMigrateToolOptions()
3847 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property); in RenderARCMigrateToolOptions()
3850 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals); in RenderARCMigrateToolOptions()
3851 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting); in RenderARCMigrateToolOptions()
3852 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property); in RenderARCMigrateToolOptions()
3853 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_all); in RenderARCMigrateToolOptions()
3854 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readonly_property); in RenderARCMigrateToolOptions()
3855 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readwrite_property); in RenderARCMigrateToolOptions()
3856 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property_dot_syntax); in RenderARCMigrateToolOptions()
3857 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_annotation); in RenderARCMigrateToolOptions()
3858 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_instancetype); in RenderARCMigrateToolOptions()
3859 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_nsmacros); in RenderARCMigrateToolOptions()
3860 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_protocol_conformance); in RenderARCMigrateToolOptions()
3861 Args.AddLastArg(CmdArgs, options::OPT_objcmt_atomic_property); in RenderARCMigrateToolOptions()
3862 Args.AddLastArg(CmdArgs, options::OPT_objcmt_returns_innerpointer_property); in RenderARCMigrateToolOptions()
3863 Args.AddLastArg(CmdArgs, options::OPT_objcmt_ns_nonatomic_iosonly); in RenderARCMigrateToolOptions()
3864 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_designated_init); in RenderARCMigrateToolOptions()
3865 Args.AddLastArg(CmdArgs, options::OPT_objcmt_allowlist_dir_path); in RenderARCMigrateToolOptions()
3870 const ArgList &Args, ArgStringList &CmdArgs) { in RenderBuiltinOptions() argument
3873 Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin, in RenderBuiltinOptions()
3874 !Args.hasArg(options::OPT_mkernel)); in RenderBuiltinOptions()
3879 if (Args.hasArg(options::OPT_ffreestanding)) in RenderBuiltinOptions()
3883 for (const Arg *A : Args.filtered(options::OPT_fno_builtin_)) { in RenderBuiltinOptions()
3889 A->render(Args, CmdArgs); in RenderBuiltinOptions()
3914 clang::driver::tools::getCXX20NamedModuleOutputPath(const ArgList &Args, in getCXX20NamedModuleOutputPath() argument
3916 if (Arg *ModuleOutputEQ = Args.getLastArg(options::OPT_fmodule_output_EQ)) in getCXX20NamedModuleOutputPath()
3920 if (Arg *FinalOutput = Args.getLastArg(options::OPT_o); in getCXX20NamedModuleOutputPath()
3921 FinalOutput && Args.hasArg(options::OPT_c)) in getCXX20NamedModuleOutputPath()
3932 const ArgList &Args, const InputInfo &Input, in RenderModulesOptions() argument
3943 if (Args.hasFlag(options::OPT_fmodules, options::OPT_fno_modules, false)) { in RenderModulesOptions()
3944 bool AllowedInCXX = Args.hasFlag(options::OPT_fcxx_modules, in RenderModulesOptions()
3956 if (Args.hasFlag(options::OPT_fimplicit_module_maps, in RenderModulesOptions()
3961 Args.addOptInFlag(CmdArgs, options::OPT_fmodules_decluse, in RenderModulesOptions()
3966 if (Args.hasFlag(options::OPT_fmodules_strict_decluse, in RenderModulesOptions()
3972 if (!Args.hasFlag(options::OPT_fimplicit_modules, in RenderModulesOptions()
3981 if (Arg *A = Args.getLastArg(options::OPT_fmodules_cache_path)) in RenderModulesOptions()
4001 CmdArgs.push_back(Args.MakeArgString(Path)); in RenderModulesOptions()
4006 if (Args.hasFlag(options::OPT_fprebuilt_implicit_modules, in RenderModulesOptions()
4009 if (Args.hasFlag(options::OPT_fmodules_validate_input_files_content, in RenderModulesOptions()
4017 Args.AddLastArg(CmdArgs, options::OPT_fmodule_name_EQ); in RenderModulesOptions()
4021 Args.AddAllArgs(CmdArgs, options::OPT_fmodule_map_file); in RenderModulesOptions()
4025 if (Args.hasArg(options::OPT_fbuiltin_module_map)) { in RenderModulesOptions()
4031 Args.MakeArgString("-fmodule-map-file=" + BuiltinModuleMap)); in RenderModulesOptions()
4039 Args.AddAllArgs(CmdArgs, options::OPT_fmodule_file); in RenderModulesOptions()
4042 for (const Arg *A : Args.filtered(options::OPT_fprebuilt_module_path)) { in RenderModulesOptions()
4043 CmdArgs.push_back(Args.MakeArgString( in RenderModulesOptions()
4048 Args.ClaimAllArgs(options::OPT_fmodule_file); in RenderModulesOptions()
4056 C.addTempFile(Args.MakeArgString(VFSDir)); in RenderModulesOptions()
4060 CmdArgs.push_back(Args.MakeArgString(VFSDir)); in RenderModulesOptions()
4064 Args.AddLastArg(CmdArgs, options::OPT_fmodules_user_build_path); in RenderModulesOptions()
4067 Args.AddAllArgs(CmdArgs, options::OPT_fmodules_ignore_macro); in RenderModulesOptions()
4068 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_interval); in RenderModulesOptions()
4069 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_after); in RenderModulesOptions()
4072 Args.AddLastArg(CmdArgs, options::OPT_fbuild_session_timestamp); in RenderModulesOptions()
4074 if (Arg *A = Args.getLastArg(options::OPT_fbuild_session_file)) { in RenderModulesOptions()
4075 if (Args.hasArg(options::OPT_fbuild_session_timestamp)) in RenderModulesOptions()
4077 << A->getAsString(Args) << "-fbuild-session-timestamp"; in RenderModulesOptions()
4082 CmdArgs.push_back(Args.MakeArgString( in RenderModulesOptions()
4089 if (Args.getLastArg( in RenderModulesOptions()
4091 if (!Args.getLastArg(options::OPT_fbuild_session_timestamp, in RenderModulesOptions()
4095 Args.AddLastArg(CmdArgs, in RenderModulesOptions()
4099 if (Args.hasFlag(options::OPT_fmodules_validate_system_headers, in RenderModulesOptions()
4104 Args.AddLastArg(CmdArgs, in RenderModulesOptions()
4107 Args.ClaimAllArgs(options::OPT_fbuild_session_timestamp); in RenderModulesOptions()
4108 Args.ClaimAllArgs(options::OPT_fbuild_session_file); in RenderModulesOptions()
4109 Args.ClaimAllArgs(options::OPT_fmodules_validate_once_per_build_session); in RenderModulesOptions()
4110 Args.ClaimAllArgs(options::OPT_fmodules_validate_system_headers); in RenderModulesOptions()
4111 Args.ClaimAllArgs(options::OPT_fno_modules_validate_system_headers); in RenderModulesOptions()
4112 Args.ClaimAllArgs(options::OPT_fmodules_disable_diagnostic_validation); in RenderModulesOptions()
4119 if (Args.hasArg(options::OPT_modules_reduced_bmi) && in RenderModulesOptions()
4124 if (Args.hasArg(options::OPT_fmodule_output_EQ)) in RenderModulesOptions()
4125 Args.AddLastArg(CmdArgs, options::OPT_fmodule_output_EQ); in RenderModulesOptions()
4127 CmdArgs.push_back(Args.MakeArgString( in RenderModulesOptions()
4129 getCXX20NamedModuleOutputPath(Args, Input.getBaseInput()))); in RenderModulesOptions()
4135 Args.ClaimAllArgs(options::OPT_modules_reduced_bmi); in RenderModulesOptions()
4146 Args.ClaimAllArgs(options::OPT_fmodule_output); in RenderModulesOptions()
4147 Args.ClaimAllArgs(options::OPT_fmodule_output_EQ); in RenderModulesOptions()
4153 static void RenderCharacterOptions(const ArgList &Args, const llvm::Triple &T, in RenderCharacterOptions() argument
4156 if (const Arg *A = Args.getLastArg(options::OPT_fsigned_char, in RenderCharacterOptions()
4169 Args.AddLastArg(CmdArgs, options::OPT_fchar8__t, options::OPT_fno_char8__t); in RenderCharacterOptions()
4171 if (const Arg *A = Args.getLastArg(options::OPT_fshort_wchar, in RenderCharacterOptions()
4190 const llvm::Triple &T, const ArgList &Args, in RenderObjCOptions() argument
4199 if (!Args.hasFlag(options::OPT_fobjc_legacy_dispatch, in RenderObjCOptions()
4217 if (isObjCAutoRefCount(Args)) { in RenderObjCOptions()
4226 if (TC.GetCXXStdlibType(Args) == ToolChain::CST_Libcxx) in RenderObjCOptions()
4234 if (Args.hasFlag(options::OPT_fobjc_arc_exceptions, in RenderObjCOptions()
4242 if (Args.hasArg(options::OPT_fno_objc_arc)) { in RenderObjCOptions()
4243 Args.ClaimAllArgs(options::OPT_fobjc_arc_exceptions); in RenderObjCOptions()
4244 Args.ClaimAllArgs(options::OPT_fno_objc_arc_exceptions); in RenderObjCOptions()
4250 auto *Arg = Args.getLastArg( in RenderObjCOptions()
4267 Args.getLastArg(options::OPT_fobjc_weak, options::OPT_fno_objc_weak); in RenderObjCOptions()
4274 WeakArg->render(Args, CmdArgs); in RenderObjCOptions()
4278 if (Args.hasArg(options::OPT_fobjc_disable_direct_methods_for_testing)) in RenderObjCOptions()
4282 static void RenderDiagnosticsOptions(const Driver &D, const ArgList &Args, in RenderDiagnosticsOptions() argument
4287 if (const Arg *A = Args.getLastArg(options::OPT__SLASH_diagnostics_classic, in RenderDiagnosticsOptions()
4307 if (!Args.hasFlag(options::OPT_fcaret_diagnostics, in RenderDiagnosticsOptions()
4311 Args.addOptOutFlag(CmdArgs, options::OPT_fdiagnostics_fixit_info, in RenderDiagnosticsOptions()
4313 Args.addOptOutFlag(CmdArgs, options::OPT_fdiagnostics_show_option, in RenderDiagnosticsOptions()
4317 Args.getLastArg(options::OPT_fdiagnostics_show_category_EQ)) { in RenderDiagnosticsOptions()
4322 Args.addOptInFlag(CmdArgs, options::OPT_fdiagnostics_show_hotness, in RenderDiagnosticsOptions()
4326 Args.getLastArg(options::OPT_fdiagnostics_hotness_threshold_EQ)) { in RenderDiagnosticsOptions()
4329 CmdArgs.push_back(Args.MakeArgString(Opt)); in RenderDiagnosticsOptions()
4333 Args.getLastArg(options::OPT_fdiagnostics_misexpect_tolerance_EQ)) { in RenderDiagnosticsOptions()
4336 CmdArgs.push_back(Args.MakeArgString(Opt)); in RenderDiagnosticsOptions()
4339 if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_format_EQ)) { in RenderDiagnosticsOptions()
4347 if (const Arg *A = Args.getLastArg( in RenderDiagnosticsOptions()
4361 Args.getLastArg(options::OPT_fcolor_diagnostics, in RenderDiagnosticsOptions()
4363 if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_color_EQ)) { in RenderDiagnosticsOptions()
4373 if (Args.hasArg(options::OPT_fansi_escape_codes)) in RenderDiagnosticsOptions()
4376 Args.addOptOutFlag(CmdArgs, options::OPT_fshow_source_location, in RenderDiagnosticsOptions()
4379 Args.addOptOutFlag(CmdArgs, options::OPT_fdiagnostics_show_line_numbers, in RenderDiagnosticsOptions()
4382 if (Args.hasArg(options::OPT_fdiagnostics_absolute_paths)) in RenderDiagnosticsOptions()
4385 if (!Args.hasFlag(options::OPT_fshow_column, options::OPT_fno_show_column, in RenderDiagnosticsOptions()
4389 Args.addOptOutFlag(CmdArgs, options::OPT_fspell_checking, in RenderDiagnosticsOptions()
4394 const ArgList &Args, Arg *&Arg) { in getDebugFissionKind() argument
4395 Arg = Args.getLastArg(options::OPT_gsplit_dwarf, options::OPT_gsplit_dwarf_EQ, in getDebugFissionKind()
4415 const ArgList &Args, ArgStringList &CmdArgs, in renderDwarfFormat() argument
4418 Args.getLastArg(options::OPT_gdwarf64, options::OPT_gdwarf32); in renderDwarfFormat()
4425 << DwarfFormatArg->getAsString(Args) << "DWARFv3 or greater"; in renderDwarfFormat()
4428 << DwarfFormatArg->getAsString(Args) << "64 bit architecture"; in renderDwarfFormat()
4431 << DwarfFormatArg->getAsString(Args) << "ELF platforms"; in renderDwarfFormat()
4434 DwarfFormatArg->render(Args, CmdArgs); in renderDwarfFormat()
4439 const ArgList &Args, bool IRInput, ArgStringList &CmdArgs, in renderDebugOptions() argument
4443 if (Args.hasFlag(options::OPT_fdebug_info_for_profiling, in renderDebugOptions()
4446 Args.getLastArg(options::OPT_fdebug_info_for_profiling), Args, D, TC)) in renderDebugOptions()
4461 Args.hasFlag(options::OPT_fsplit_dwarf_inlining, in renderDebugOptions()
4467 if (IRInput || Args.hasArg(options::OPT_g_Group)) { in renderDebugOptions()
4469 DwarfFission = getDebugFissionKind(D, Args, SplitDWARFArg); in renderDebugOptions()
4471 !checkDebugInfoOption(SplitDWARFArg, Args, D, TC)) { in renderDebugOptions()
4476 if (const Arg *A = Args.getLastArg(options::OPT_g_Group)) { in renderDebugOptions()
4480 if (checkDebugInfoOption(A, Args, D, TC) && in renderDebugOptions()
4498 Args.getLastArg(options::OPT_gTune_Group, options::OPT_ggdbN_Group)) { in renderDebugOptions()
4500 if (checkDebugInfoOption(A, Args, D, TC)) { in renderDebugOptions()
4514 if (const Arg *A = getDwarfNArg(Args)) in renderDebugOptions()
4515 EmitDwarf = checkDebugInfoOption(A, Args, D, TC); in renderDebugOptions()
4518 if (const Arg *A = Args.getLastArg(options::OPT_gcodeview)) in renderDebugOptions()
4519 EmitCodeView = checkDebugInfoOption(A, Args, D, TC); in renderDebugOptions()
4539 RequestedDWARFVersion = getDwarfVersion(TC, Args); in renderDebugOptions()
4544 Args.ClaimAllArgs(options::OPT_fdebug_default_version); in renderDebugOptions()
4554 if (const Arg *A = Args.getLastArg(options::OPT_gstrict_dwarf)) in renderDebugOptions()
4555 (void)checkDebugInfoOption(A, Args, D, TC); in renderDebugOptions()
4556 if (Args.hasFlag(options::OPT_gstrict_dwarf, options::OPT_gno_strict_dwarf, in renderDebugOptions()
4561 Args.ClaimAllArgs(options::OPT_g_flags_Group); in renderDebugOptions()
4569 if (const Arg *A = Args.getLastArg(options::OPT_gcolumn_info)) in renderDebugOptions()
4570 (void)checkDebugInfoOption(A, Args, D, TC); in renderDebugOptions()
4571 if (!Args.hasFlag(options::OPT_gcolumn_info, options::OPT_gno_column_info, in renderDebugOptions()
4578 if (Args.hasFlag(options::OPT_gmodules, options::OPT_gno_modules, false)) { in renderDebugOptions()
4581 if (checkDebugInfoOption(Args.getLastArg(options::OPT_gmodules), Args, D, in renderDebugOptions()
4600 bool NeedFullDebug = Args.hasFlag( in renderDebugOptions()
4604 if (const Arg *A = Args.getLastArg(options::OPT_fstandalone_debug)) in renderDebugOptions()
4605 (void)checkDebugInfoOption(A, Args, D, TC); in renderDebugOptions()
4609 if (Args.hasFlag(options::OPT_fno_eliminate_unused_debug_types, in renderDebugOptions()
4616 if (Args.hasFlag(options::OPT_gembed_source, options::OPT_gno_embed_source, in renderDebugOptions()
4622 const Arg *A = Args.getLastArg(options::OPT_gembed_source); in renderDebugOptions()
4625 << A->getAsString(Args) << "-gdwarf-5"; in renderDebugOptions()
4630 << A->getAsString(Args) << TC.getTripleString() << 5 in renderDebugOptions()
4632 else if (checkDebugInfoOption(A, Args, D, TC)) in renderDebugOptions()
4639 Args.addOptInFlag(CmdArgs, options::OPT_gcodeview_ghash, in renderDebugOptions()
4642 Args.addOptOutFlag(CmdArgs, options::OPT_gcodeview_command_line, in renderDebugOptions()
4646 Args.addOptOutFlag(CmdArgs, options::OPT_ginline_line_tables, in renderDebugOptions()
4650 if (willEmitRemarks(Args) && in renderDebugOptions()
4655 TC.adjustDebugInfoKind(DebugInfoKind, Args); in renderDebugOptions()
4659 RenderDebugEnablingArgs(Args, CmdArgs, DebugInfoKind, EffectiveDWARFVersion, in renderDebugOptions()
4665 if (Args.hasFlag(options::OPT_fdebug_macro, options::OPT_fno_debug_macro, in renderDebugOptions()
4667 if (checkDebugInfoOption(Args.getLastArg(options::OPT_fdebug_macro), Args, in renderDebugOptions()
4673 Args.getLastArg(options::OPT_ggnu_pubnames, options::OPT_gno_gnu_pubnames, in renderDebugOptions()
4676 (PubnamesArg && checkDebugInfoOption(PubnamesArg, Args, D, TC))) { in renderDebugOptions()
4691 Args.getLastArg(options::OPT_gsimple_template_names, in renderDebugOptions()
4695 checkDebugInfoOption(SimpleTemplateNamesArg, Args, D, TC)) { in renderDebugOptions()
4706 if (const auto *DebugTemplateAlias = Args.getLastArg( in renderDebugOptions()
4710 if (checkDebugInfoOption(DebugTemplateAlias, Args, D, TC)) { in renderDebugOptions()
4718 if (const Arg *A = Args.getLastArg(options::OPT_gsrc_hash_EQ)) { in renderDebugOptions()
4720 CmdArgs.push_back(Args.MakeArgString("-gsrc-hash=" + v)); in renderDebugOptions()
4723 Args.addOptInFlag(CmdArgs, options::OPT_fdebug_ranges_base_address, in renderDebugOptions()
4730 if (const Arg *A = Args.getLastArg(options::OPT_gdwarf_aranges)) in renderDebugOptions()
4731 NeedAranges = checkDebugInfoOption(A, Args, D, TC) || NeedAranges; in renderDebugOptions()
4737 Args.addOptInFlag(CmdArgs, options::OPT_fforce_dwarf_frame, in renderDebugOptions()
4741 if (Args.hasFlag(options::OPT_fdebug_types_section, in renderDebugOptions()
4745 << Args.getLastArg(options::OPT_fdebug_types_section) in renderDebugOptions()
4746 ->getAsString(Args) in renderDebugOptions()
4749 Args.getLastArg(options::OPT_fdebug_types_section), Args, D, in renderDebugOptions()
4758 Args.getLastArg(options::OPT_gomit_unreferenced_methods, in renderDebugOptions()
4760 (void)checkDebugInfoOption(A, Args, D, TC); in renderDebugOptions()
4761 if (Args.hasFlag(options::OPT_gomit_unreferenced_methods, in renderDebugOptions()
4772 if (!Args.hasFlag(options::OPT_fdwarf_directory_asm, in renderDebugOptions()
4787 renderDwarfFormat(D, T, Args, CmdArgs, EffectiveDWARFVersion); in renderDebugOptions()
4788 RenderDebugInfoCompressionArgs(Args, CmdArgs, D, TC); in renderDebugOptions()
4791 if (Args.hasFlag(options::OPT_fjmc, options::OPT_fno_jmc, false)) { in renderDebugOptions()
4808 addDebugCompDirArg(Args, CmdArgs, D.getVFS()); in renderDebugOptions()
4810 addDebugPrefixMapArg(D, TC, Args, CmdArgs); in renderDebugOptions()
4814 addDebugObjectName(Args, CmdArgs, DebugCompilationDir, in renderDebugOptions()
4818 static void ProcessVSRuntimeLibrary(const ToolChain &TC, const ArgList &Args, in ProcessVSRuntimeLibrary() argument
4822 if (Args.hasArg(options::OPT__SLASH_LDd)) in ProcessVSRuntimeLibrary()
4827 if (Arg *A = Args.getLastArg(options::OPT__SLASH_M_Group)) in ProcessVSRuntimeLibrary()
4830 if (Arg *A = Args.getLastArg(options::OPT_fms_runtime_lib_EQ)) { in ProcessVSRuntimeLibrary()
4842 if (Args.hasArg(options::OPT__SLASH_LDd)) in ProcessVSRuntimeLibrary()
4855 if (Args.hasArg(options::OPT__SLASH_LDd)) in ProcessVSRuntimeLibrary()
4871 if (Args.hasArg(options::OPT_fms_omit_default_lib)) { in ProcessVSRuntimeLibrary()
4891 const ArgList &Args, const char *LinkingOutput) const { in ConstructJob() argument
4898 Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext); in ConstructJob()
4920 Args.hasFlag(options::OPT_offload_new_driver, in ConstructJob()
4924 Args.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc, false); in ConstructJob()
4984 CmdArgs.push_back(Args.MakeArgString(TripleStr)); in ConstructJob()
4986 if (const Arg *MJ = Args.getLastArg(options::OPT_MJ)) { in ConstructJob()
4987 DumpCompilationDatabase(C, MJ->getValue(), TripleStr, Output, Input, Args); in ConstructJob()
4988 Args.ClaimAllArgs(options::OPT_MJ); in ConstructJob()
4990 Args.getLastArg(options::OPT_gen_cdb_fragment_path)) { in ConstructJob()
4992 TripleStr, Output, Input, Args); in ConstructJob()
4993 Args.ClaimAllArgs(options::OPT_gen_cdb_fragment_path); in ConstructJob()
5019 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
5032 CmdArgs.push_back(Args.MakeArgString(NormalizedTriple)); in ConstructJob()
5039 if (Args.getLastArg(options::OPT_mprintf_kind_EQ)) { in ConstructJob()
5040 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
5042 Args.getLastArgValue(options::OPT_mprintf_kind_EQ))); in ConstructJob()
5045 Args.MakeArgString("-Werror=format-invalid-specifier")); in ConstructJob()
5051 if (const Arg *PF = Args.getLastArg(options::OPT_mprintf_kind_EQ)) in ConstructJob()
5054 if (Args.hasFlag(options::OPT_fsycl, options::OPT_fno_sycl, false)) { in ConstructJob()
5057 if (Arg *A = Args.getLastArg(options::OPT_sycl_std_EQ)) { in ConstructJob()
5058 A->render(Args, CmdArgs); in ConstructJob()
5072 CmdArgs.push_back(Args.MakeArgString(NormalizedTriple)); in ConstructJob()
5100 UnifiedLTO = Args.hasFlag(options::OPT_funified_lto, in ConstructJob()
5117 Args.ClaimAllArgs(options::OPT_mrelax_all); in ConstructJob()
5118 Args.ClaimAllArgs(options::OPT_mno_relax_all); in ConstructJob()
5119 Args.ClaimAllArgs(options::OPT_mincremental_linker_compatible); in ConstructJob()
5120 Args.ClaimAllArgs(options::OPT_mno_incremental_linker_compatible); in ConstructJob()
5126 Args.ClaimAllArgs(options::OPT_mimplicit_it_EQ); in ConstructJob()
5132 Args.ClaimAllArgs(options::OPT_Wa_COMMA); in ConstructJob()
5133 Args.ClaimAllArgs(options::OPT_Xassembler); in ConstructJob()
5134 Args.ClaimAllArgs(options::OPT_femit_dwarf_unwind_EQ); in ConstructJob()
5147 if (Args.hasArg(options::OPT_rewrite_objc) && in ConstructJob()
5148 !Args.hasArg(options::OPT_g_Group)) in ConstructJob()
5156 CollectArgsForIntegratedAssembler(C, Args, CmdArgs, D); in ConstructJob()
5159 (void)Args.hasArg(options::OPT_force__cpusubtype__ALL); in ConstructJob()
5176 if (Arg *PrettySGFArg = Args.getLastArg(options::OPT_emit_pretty_sgf)) in ConstructJob()
5177 PrettySGFArg->render(Args, CmdArgs); in ConstructJob()
5179 Arg *SymbolGraphDirArg = Args.getLastArg(options::OPT_symbol_graph_dir_EQ); in ConstructJob()
5181 if (Arg *ProductNameArg = Args.getLastArg(options::OPT_product_name_EQ)) in ConstructJob()
5182 ProductNameArg->render(Args, CmdArgs); in ConstructJob()
5184 Args.getLastArg(options::OPT_extract_api_ignores_EQ)) in ConstructJob()
5185 ExtractAPIIgnoresFileArg->render(Args, CmdArgs); in ConstructJob()
5187 Args.getLastArg(options::OPT_emit_extension_symbol_graphs)) { in ConstructJob()
5191 EmitExtensionSymbolGraphs->render(Args, CmdArgs); in ConstructJob()
5194 SymbolGraphDirArg->render(Args, CmdArgs); in ConstructJob()
5206 if (Triple.isAMDGCN() && IsOpenMPDevice && Args.hasArg(options::OPT_S) && in ConstructJob()
5207 Args.hasArg(options::OPT_emit_llvm)) { in ConstructJob()
5215 Args.hasArg(options::OPT_interface_stub_version_EQ) in ConstructJob()
5216 ? Args.getLastArgValue(options::OPT_interface_stub_version_EQ) in ConstructJob()
5220 Args.MakeArgString(Twine("-interface-stub-version=") + ArgStr.str())); in ConstructJob()
5246 !Args.hasFlag(options::OPT_offload_new_driver, in ConstructJob()
5250 << Args.getLastArg(options::OPT_foffload_lto, in ConstructJob()
5252 ->getAsString(Args) in ConstructJob()
5257 << Args.getLastArg(options::OPT_foffload_lto, in ConstructJob()
5259 ->getAsString(Args) in ConstructJob()
5263 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
5274 Args.AddLastArg(CmdArgs, options::OPT_dumpdir); in ConstructJob()
5276 if (const Arg *A = Args.getLastArg(options::OPT_fthinlto_index_EQ)) { in ConstructJob()
5278 D.Diag(diag::err_drv_arg_requires_bitcode_input) << A->getAsString(Args); in ConstructJob()
5279 Args.AddLastArg(CmdArgs, options::OPT_fthinlto_index_EQ); in ConstructJob()
5283 Args.addOptInFlag(CmdArgs, options::OPT_mregnames, in ConstructJob()
5286 if (Args.getLastArg(options::OPT_fthin_link_bitcode_EQ)) in ConstructJob()
5287 Args.AddLastArg(CmdArgs, options::OPT_fthin_link_bitcode_EQ); in ConstructJob()
5289 if (Args.getLastArg(options::OPT_save_temps_EQ)) in ConstructJob()
5290 Args.AddLastArg(CmdArgs, options::OPT_save_temps_EQ); in ConstructJob()
5292 auto *MemProfArg = Args.getLastArg(options::OPT_fmemory_profile, in ConstructJob()
5297 MemProfArg->render(Args, CmdArgs); in ConstructJob()
5300 Args.getLastArg(options::OPT_fmemory_profile_use_EQ)) { in ConstructJob()
5303 << MemProfUseArg->getAsString(Args) << MemProfArg->getAsString(Args); in ConstructJob()
5304 if (auto *PGOInstrArg = Args.getLastArg(options::OPT_fprofile_generate, in ConstructJob()
5307 << MemProfUseArg->getAsString(Args) << PGOInstrArg->getAsString(Args); in ConstructJob()
5308 MemProfUseArg->render(Args, CmdArgs); in ConstructJob()
5316 Args.AddLastArg(CmdArgs, options::OPT_fembed_bitcode_EQ); in ConstructJob()
5321 TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingDeviceKind()); in ConstructJob()
5368 for (const auto &A : Args) in ConstructJob()
5373 Args.addOptOutFlag(CmdArgs, options::OPT_foptimize_sibling_calls, in ConstructJob()
5376 RenderFloatingPointOptions(TC, D, isOptimizationLevelFast(Args), Args, in ConstructJob()
5385 RenderARMABI(D, Triple, Args, CmdArgs); in ConstructJob()
5390 RenderAArch64ABI(Triple, Args, CmdArgs); in ConstructJob()
5395 if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) { in ConstructJob()
5400 A->render(Args, CmdArgs); in ConstructJob()
5415 addDashXForInput(Args, II, CmdArgs); in ConstructJob()
5419 II.getInputArg().renderAsInput(Args, CmdArgs); in ConstructJob()
5445 if (Args.hasFlag(options::OPT_fno_verify_intermediate_code, in ConstructJob()
5451 if (Args.hasFlag(options::OPT_fdiscard_value_names, in ConstructJob()
5453 if (Args.hasArg(options::OPT_fdiscard_value_names) && in ConstructJob()
5465 CmdArgs.push_back(getBaseInputName(Args, Input)); in ConstructJob()
5469 if (Args.hasArg(options::OPT_static)) in ConstructJob()
5472 if (Args.hasArg(options::OPT_municode)) in ConstructJob()
5476 RenderAnalyzerOptions(Args, CmdArgs, Triple, Input); in ConstructJob()
5479 (isa<PreprocessJobAction>(JA) && Args.hasArg(options::OPT__analyze))) in ConstructJob()
5486 for (auto *Arg : Args.filtered(options::OPT_Xclang)) in ConstructJob()
5492 for (auto *Arg : Args.filtered(options::OPT_Xanalyzer)) in ConstructJob()
5500 CheckCodeGenerationOptions(D, Args); in ConstructJob()
5502 unsigned FunctionAlignment = ParseFunctionAlignment(TC, Args); in ConstructJob()
5506 CmdArgs.push_back(Args.MakeArgString(std::to_string(FunctionAlignment))); in ConstructJob()
5511 if (const Arg *A = Args.getLastArg(options::OPT_falign_loops_EQ)) { in ConstructJob()
5515 << A->getAsString(Args) << A->getValue(); in ConstructJob()
5518 << A->getAsString(Args) << A->getValue(); in ConstructJob()
5521 CmdArgs.push_back(Args.MakeArgString("-falign-loops=" + in ConstructJob()
5535 auto MacroDefs = Args.getAllArgValues(options::OPT_D); in ConstructJob()
5557 std::tie(RelocationModel, PICLevel, IsPIE) = ParsePICArgs(TC, Args); in ConstructJob()
5559 Args.getLastArg(options::OPT_mno_pic_data_is_text_relative, in ConstructJob()
5583 if (Args.hasArg(options::OPT_mcmse) && in ConstructJob()
5584 !Args.hasArg(options::OPT_fallow_unsupported)) { in ConstructJob()
5592 !Args.hasArg(options::OPT_fallow_unsupported)) in ConstructJob()
5616 if (Arg *A = Args.getLastArg(options::OPT_meabi)) { in ConstructJob()
5633 Arg *A = Args.getLastArg(options::OPT_fsemantic_interposition, in ConstructJob()
5642 A->render(Args, CmdArgs); in ConstructJob()
5650 if (Arg *A = Args.getLastArg(options::OPT_mthread_model)) { in ConstructJob()
5653 << A->getValue() << A->getAsString(Args); in ConstructJob()
5659 CmdArgs.push_back(Args.MakeArgString(Model)); in ConstructJob()
5663 if (Arg *A = Args.getLastArg(options::OPT_fveclib)) { in ConstructJob()
5681 A->render(Args, CmdArgs); in ConstructJob()
5684 if (Args.hasFlag(options::OPT_fmerge_all_constants, in ConstructJob()
5688 Args.addOptOutFlag(CmdArgs, options::OPT_fdelete_null_pointer_checks, in ConstructJob()
5693 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ_quadword_atomics)) { in ConstructJob()
5700 if (Arg *A = Args.getLastArg(options::OPT_mlong_double_128)) { in ConstructJob()
5708 if (Arg *A = Args.getLastArg(options::OPT_Wframe_larger_than_EQ)) { in ConstructJob()
5715 CmdArgs.push_back(Args.MakeArgString("-fwarn-stack-size=" + V)); in ConstructJob()
5718 Args.addOptOutFlag(CmdArgs, options::OPT_fjump_tables, in ConstructJob()
5720 Args.addOptInFlag(CmdArgs, options::OPT_fprofile_sample_accurate, in ConstructJob()
5722 Args.addOptOutFlag(CmdArgs, options::OPT_fpreserve_as_comments, in ConstructJob()
5725 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) { in ConstructJob()
5730 if (Arg *A = Args.getLastArg(options::OPT_maix_struct_return, in ConstructJob()
5743 if (Arg *A = Args.getLastArg(options::OPT_fpcc_struct_return, in ConstructJob()
5756 if (Args.hasFlag(options::OPT_mrtd, options::OPT_mno_rtd, false)) { in ConstructJob()
5763 if (Args.hasArg(options::OPT_fenable_matrix)) { in ConstructJob()
5771 getFramePointerKind(Args, RawTriple); in ConstructJob()
5790 Args.addOptOutFlag(CmdArgs, options::OPT_fzero_initialized_in_bss, in ConstructJob()
5793 bool OFastEnabled = isOptimizationLevelFast(Args); in ConstructJob()
5802 if (!Args.hasFlag(options::OPT_fstrict_aliasing, StrictAliasingAliasOption, in ConstructJob()
5805 if (Args.hasFlag(options::OPT_fpointer_tbaa, options::OPT_fno_pointer_tbaa, in ConstructJob()
5808 if (!Args.hasFlag(options::OPT_fstruct_path_tbaa, in ConstructJob()
5811 Args.addOptInFlag(CmdArgs, options::OPT_fstrict_enums, in ConstructJob()
5813 Args.addOptOutFlag(CmdArgs, options::OPT_fstrict_return, in ConstructJob()
5815 Args.addOptInFlag(CmdArgs, options::OPT_fallow_editor_placeholders, in ConstructJob()
5817 Args.addOptInFlag(CmdArgs, options::OPT_fstrict_vtable_pointers, in ConstructJob()
5819 Args.addOptInFlag(CmdArgs, options::OPT_fforce_emit_vtables, in ConstructJob()
5821 Args.addOptOutFlag(CmdArgs, options::OPT_foptimize_sibling_calls, in ConstructJob()
5823 Args.addOptOutFlag(CmdArgs, options::OPT_fescaping_block_tail_calls, in ConstructJob()
5826 Args.AddLastArg(CmdArgs, options::OPT_ffine_grained_bitfield_accesses, in ConstructJob()
5829 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_relative_cxx_abi_vtables, in ConstructJob()
5832 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_omit_vtable_rtti, in ConstructJob()
5835 Args.AddLastArg(CmdArgs, options::OPT_fdisable_block_signature_string, in ConstructJob()
5839 Args.addOptInFlag(CmdArgs, options::OPT_fsplit_stack, in ConstructJob()
5843 if (Args.hasFlag(options::OPT_fprotect_parens, in ConstructJob()
5847 RenderFloatingPointOptions(TC, D, OFastEnabled, Args, CmdArgs, JA); in ConstructJob()
5849 if (Arg *A = Args.getLastArg(options::OPT_fextend_args_EQ)) { in ConstructJob()
5863 if (Arg *A = Args.getLastArg(options::OPT_mdouble_EQ)) { in ConstructJob()
5865 A->render(Args, CmdArgs); in ConstructJob()
5868 << A->getAsString(Args) << TripleStr; in ConstructJob()
5871 if (Arg *A = Args.getLastArg(options::OPT_LongDouble_Group)) { in ConstructJob()
5873 A->render(Args, CmdArgs); in ConstructJob()
5876 A->render(Args, CmdArgs); in ConstructJob()
5879 << A->getAsString(Args) << TripleStr; in ConstructJob()
5885 if (!Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm, in ConstructJob()
5891 if (Arg *A = Args.getLastArg(options::OPT_fbinutils_version_EQ)) { in ConstructJob()
5895 A->render(Args, CmdArgs); in ConstructJob()
5899 A->render(Args, CmdArgs); in ConstructJob()
5910 if (Args.hasArg(options::OPT_fdebug_pass_structure)) { in ConstructJob()
5914 if (Args.hasArg(options::OPT_fdebug_pass_arguments)) { in ConstructJob()
5930 if (Args.hasFlag(options::OPT_mms_bitfields, options::OPT_mno_ms_bitfields, in ConstructJob()
5936 Args.addOptOutFlag(CmdArgs, options::OPT_fauto_import, in ConstructJob()
5940 if (Args.hasFlag(options::OPT_fms_volatile, options::OPT_fno_ms_volatile, in ConstructJob()
5947 if (Arg *A = Args.getLastArg(options::OPT_fdirect_access_external_data, in ConstructJob()
5951 A->render(Args, CmdArgs); in ConstructJob()
5958 if (Args.hasFlag(options::OPT_fno_plt, options::OPT_fplt, false)) { in ConstructJob()
5966 Args.hasFlag(options::OPT_ffreestanding, options::OPT_fhosted, false) || in ConstructJob()
5971 Args.AddLastArg(CmdArgs, options::OPT_fno_knr_functions); in ConstructJob()
5976 auto SanitizeArgs = TC.getSanitizerArgs(Args); in ConstructJob()
5979 TC.getDefaultUnwindTableLevel(Args) == ToolChain::UnwindTableLevel::Asynchronous; in ConstructJob()
5981 TC.getDefaultUnwindTableLevel(Args) == ToolChain::UnwindTableLevel::Synchronous; in ConstructJob()
5983 bool AsyncUnwindTables = Args.hasFlag( in ConstructJob()
5989 Args.hasFlag(options::OPT_funwind_tables, options::OPT_fno_unwind_tables, in ConstructJob()
5998 if (!Args.getLastArg(options::OPT_gpu_use_aux_triple_only) && in ConstructJob()
6006 CmdArgs.push_back(Args.MakeArgString(HostCPU)); in ConstructJob()
6012 TC.addClangTargetOptions(Args, CmdArgs, JA.getOffloadingDeviceKind()); in ConstructJob()
6014 addMCModel(D, Args, Triple, RelocationModel, CmdArgs); in ConstructJob()
6016 if (Arg *A = Args.getLastArg(options::OPT_mtls_size_EQ)) { in ConstructJob()
6026 Args.AddLastArg(CmdArgs, options::OPT_mtls_size_EQ); in ConstructJob()
6029 if (isTLSDESCEnabled(TC, Args)) in ConstructJob()
6033 std::string CPU = getCPUName(D, Args, Triple, /*FromAs*/ false); in ConstructJob()
6036 CmdArgs.push_back(Args.MakeArgString(CPU)); in ConstructJob()
6039 RenderTargetOptions(Triple, Args, KernelOrKext, CmdArgs); in ConstructJob()
6044 AddClangCLArgs(Args, InputType, CmdArgs); in ConstructJob()
6049 renderDebugOptions(TC, D, RawTriple, Args, types::isLLVMIR(InputType), in ConstructJob()
6061 const char *SplitDWARFOut = SplitDebugName(JA, Args, Input, Output); in ConstructJob()
6071 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) { in ConstructJob()
6078 if (!Args.hasArg(options::OPT_fallow_unsupported)) { in ConstructJob()
6082 if ((Unsupported = Args.getLastArg(options::OPT_fapple_kext)) || in ConstructJob()
6083 (Unsupported = Args.getLastArg(options::OPT_mkernel))) in ConstructJob()
6088 if ((Unsupported = Args.getLastArg(options::OPT_faltivec))) in ConstructJob()
6092 if ((Unsupported = Args.getLastArg(options::OPT_fno_altivec))) in ConstructJob()
6097 Args.AddAllArgs(CmdArgs, options::OPT_v); in ConstructJob()
6099 if (Args.getLastArg(options::OPT_H)) { in ConstructJob()
6103 Args.AddAllArgs(CmdArgs, options::OPT_fshow_skipped_includes); in ConstructJob()
6111 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
6115 Args.MakeArgString("-header-include-filtering=" + in ConstructJob()
6119 Args.AddLastArg(CmdArgs, options::OPT_P); in ConstructJob()
6120 Args.AddLastArg(CmdArgs, options::OPT_print_ivar_layout); in ConstructJob()
6136 if (Args.hasArg(options::OPT_fcrash_diagnostics_dir)) { in ConstructJob()
6137 StringRef Dir = Args.getLastArgValue(options::OPT_fcrash_diagnostics_dir); in ConstructJob()
6139 CmdArgs.push_back(Args.MakeArgString("-crash-diagnostics-dir=" + Dir)); in ConstructJob()
6144 if (Args.hasFlag(options::OPT_ffunction_sections, in ConstructJob()
6149 if (Arg *A = Args.getLastArg(options::OPT_fbasic_block_address_map, in ConstructJob()
6153 A->render(Args, CmdArgs); in ConstructJob()
6156 << A->getAsString(Args) << TripleStr; in ConstructJob()
6160 if (Arg *A = Args.getLastArg(options::OPT_fbasic_block_sections_EQ)) { in ConstructJob()
6166 << A->getAsString(Args) << A->getValue(); in ConstructJob()
6168 A->render(Args, CmdArgs); in ConstructJob()
6174 << A->getAsString(Args) << A->getValue(); in ConstructJob()
6176 A->render(Args, CmdArgs); in ConstructJob()
6184 << A->getAsString(Args) << TripleStr; in ConstructJob()
6189 if (Args.hasFlag(options::OPT_fdata_sections, options::OPT_fno_data_sections, in ConstructJob()
6194 Args.addOptOutFlag(CmdArgs, options::OPT_funique_section_names, in ConstructJob()
6196 Args.addOptInFlag(CmdArgs, options::OPT_fseparate_named_sections, in ConstructJob()
6198 Args.addOptInFlag(CmdArgs, options::OPT_funique_internal_linkage_names, in ConstructJob()
6200 Args.addOptInFlag(CmdArgs, options::OPT_funique_basic_block_section_names, in ConstructJob()
6202 Args.addOptInFlag(CmdArgs, options::OPT_fconvergent_functions, in ConstructJob()
6205 if (Arg *A = Args.getLastArg(options::OPT_fsplit_machine_functions, in ConstructJob()
6210 A->render(Args, CmdArgs); in ConstructJob()
6213 << A->getAsString(Args) << TripleStr; in ConstructJob()
6217 Args.AddLastArg(CmdArgs, options::OPT_finstrument_functions, in ConstructJob()
6225 addPGOAndCoverageFlags(TC, C, JA, Output, Args, SanitizeArgs, CmdArgs); in ConstructJob()
6227 Args.AddLastArg(CmdArgs, options::OPT_fclang_abi_compat_EQ); in ConstructJob()
6229 if (getLastProfileSampleUseArg(Args) && in ConstructJob()
6230 Args.hasArg(options::OPT_fsample_profile_use_profi)) { in ConstructJob()
6237 !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
6238 PScpu::addProfileRTArgs(TC, Args, CmdArgs); in ConstructJob()
6239 PScpu::addSanitizerArgs(TC, Args, CmdArgs); in ConstructJob()
6243 if (Args.hasArg(options::OPT_nostdinc)) { in ConstructJob()
6247 if (Args.hasArg(options::OPT_nostdlibinc)) in ConstructJob()
6249 Args.AddLastArg(CmdArgs, options::OPT_nostdincxx); in ConstructJob()
6250 Args.AddLastArg(CmdArgs, options::OPT_nobuiltininc); in ConstructJob()
6257 Args.AddLastArg(CmdArgs, options::OPT_working_directory); in ConstructJob()
6259 RenderARCMigrateToolOptions(D, Args, CmdArgs); in ConstructJob()
6266 AddPreprocessingOptions(C, JA, D, Args, CmdArgs, Output, Inputs); in ConstructJob()
6272 Args.ClaimAllArgs(options::OPT_D); in ConstructJob()
6275 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) { in ConstructJob()
6280 A->render(Args, CmdArgs); in ConstructJob()
6286 Args.filtered(options::OPT_clang_ignored_gcc_optimization_f_Group)) { in ConstructJob()
6287 D.Diag(diag::warn_ignored_gcc_optimization) << A->getAsString(Args); in ConstructJob()
6292 Args.filtered(options::OPT_clang_ignored_legacy_options_Group)) { in ConstructJob()
6293 D.Diag(diag::warn_ignored_clang_option) << A->getAsString(Args); in ConstructJob()
6297 claimNoWarnArgs(Args); in ConstructJob()
6299 Args.AddAllArgs(CmdArgs, options::OPT_R_Group); in ConstructJob()
6302 Args.filtered(options::OPT_W_Group, options::OPT__SLASH_wd)) { in ConstructJob()
6308 << A->getAsString(Args) << A->getValue(); in ConstructJob()
6313 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
6318 A->render(Args, CmdArgs); in ConstructJob()
6321 Args.AddAllArgs(CmdArgs, options::OPT_Wsystem_headers_in_module_EQ); in ConstructJob()
6323 if (Args.hasFlag(options::OPT_pedantic, options::OPT_no_pedantic, false)) in ConstructJob()
6325 Args.AddLastArg(CmdArgs, options::OPT_pedantic_errors); in ConstructJob()
6326 Args.AddLastArg(CmdArgs, options::OPT_w); in ConstructJob()
6328 Args.addOptInFlag(CmdArgs, options::OPT_ffixed_point, in ConstructJob()
6331 if (Arg *A = Args.getLastArg(options::OPT_fcxx_abi_EQ)) in ConstructJob()
6332 A->render(Args, CmdArgs); in ConstructJob()
6334 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_relative_cxx_abi_vtables, in ConstructJob()
6337 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_omit_vtable_rtti, in ConstructJob()
6340 if (Arg *A = Args.getLastArg(options::OPT_ffuchsia_api_level_EQ)) in ConstructJob()
6341 A->render(Args, CmdArgs); in ConstructJob()
6350 const Arg *Std = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi); in ConstructJob()
6358 Std->render(Args, CmdArgs); in ConstructJob()
6361 if (Arg *A = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi, in ConstructJob()
6365 A->render(Args, CmdArgs); in ConstructJob()
6374 if (!Args.hasArg(options::OPT__SLASH_std)) { in ConstructJob()
6375 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ, "-std=", in ConstructJob()
6383 Args.AddLastArg(CmdArgs, options::OPT_ftrigraphs, in ConstructJob()
6400 Args.getLastArg(options::OPT_Wwrite_strings, in ConstructJob()
6411 Args.hasFlag(options::OPT_Wdeprecated, options::OPT_Wno_deprecated, in ConstructJob()
6417 if (Arg *Asm = Args.getLastArg(options::OPT_fasm, options::OPT_fno_asm)) { in ConstructJob()
6424 if (!ShouldEnableAutolink(Args, TC, JA)) in ConstructJob()
6427 Args.AddLastArg(CmdArgs, options::OPT_ftemplate_depth_EQ); in ConstructJob()
6428 Args.AddLastArg(CmdArgs, options::OPT_foperator_arrow_depth_EQ); in ConstructJob()
6429 Args.AddLastArg(CmdArgs, options::OPT_fconstexpr_depth_EQ); in ConstructJob()
6430 Args.AddLastArg(CmdArgs, options::OPT_fconstexpr_steps_EQ); in ConstructJob()
6432 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_library); in ConstructJob()
6434 if (Args.hasArg(options::OPT_fexperimental_new_constant_interpreter)) in ConstructJob()
6437 if (Arg *A = Args.getLastArg(options::OPT_fbracket_depth_EQ)) { in ConstructJob()
6442 if (Arg *A = Args.getLastArg(options::OPT_Wlarge_by_value_copy_EQ, in ConstructJob()
6446 CmdArgs.push_back(Args.MakeArgString("-Wlarge-by-value-copy=" + bytes)); in ConstructJob()
6451 if (Args.hasArg(options::OPT_relocatable_pch)) in ConstructJob()
6454 if (const Arg *A = Args.getLastArg(options::OPT_fcf_runtime_abi_EQ)) { in ConstructJob()
6462 A->render(Args, CmdArgs); in ConstructJob()
6465 if (Arg *A = Args.getLastArg(options::OPT_fconstant_string_class_EQ)) { in ConstructJob()
6470 if (Arg *A = Args.getLastArg(options::OPT_ftabstop_EQ)) { in ConstructJob()
6475 Args.addOptInFlag(CmdArgs, options::OPT_fstack_size_section, in ConstructJob()
6478 if (Args.hasArg(options::OPT_fstack_usage)) { in ConstructJob()
6481 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) { in ConstructJob()
6484 CmdArgs.push_back(Args.MakeArgString(OutputFilename)); in ConstructJob()
6487 Args.MakeArgString(Twine(getBaseInputStem(Args, Inputs)) + ".su")); in ConstructJob()
6491 if (Arg *A = Args.getLastArg(options::OPT_ferror_limit_EQ)) in ConstructJob()
6496 Args.AddLastArg(CmdArgs, options::OPT_fconstexpr_backtrace_limit_EQ); in ConstructJob()
6497 Args.AddLastArg(CmdArgs, options::OPT_fmacro_backtrace_limit_EQ); in ConstructJob()
6498 Args.AddLastArg(CmdArgs, options::OPT_ftemplate_backtrace_limit_EQ); in ConstructJob()
6499 Args.AddLastArg(CmdArgs, options::OPT_fspell_checking_limit_EQ); in ConstructJob()
6500 Args.AddLastArg(CmdArgs, options::OPT_fcaret_diagnostics_max_lines_EQ); in ConstructJob()
6504 if (Arg *A = Args.getLastArg(options::OPT_fmessage_length_EQ)) { in ConstructJob()
6516 Args.MakeArgString("-fmessage-length=" + Twine(MessageLength))); in ConstructJob()
6518 if (Arg *A = Args.getLastArg(options::OPT_frandomize_layout_seed_EQ)) in ConstructJob()
6520 Args.MakeArgString("-frandomize-layout-seed=" + Twine(A->getValue(0)))); in ConstructJob()
6522 if (Arg *A = Args.getLastArg(options::OPT_frandomize_layout_seed_file_EQ)) in ConstructJob()
6523 CmdArgs.push_back(Args.MakeArgString("-frandomize-layout-seed-file=" + in ConstructJob()
6527 if (const Arg *A = Args.getLastArg(options::OPT_fvisibility_EQ, in ConstructJob()
6530 A->render(Args, CmdArgs); in ConstructJob()
6546 Args.getLastArg(options::OPT_fvisibility_from_dllstorageclass, in ConstructJob()
6551 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_dllexport_EQ); in ConstructJob()
6552 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_nodllstorageclass_EQ); in ConstructJob()
6553 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_externs_dllimport_EQ); in ConstructJob()
6554 Args.AddLastArg(CmdArgs, in ConstructJob()
6560 if (Args.hasFlag(options::OPT_fvisibility_inlines_hidden, in ConstructJob()
6564 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_inlines_hidden_static_local_var, in ConstructJob()
6570 Args.getLastArg(options::OPT_fvisibility_global_new_delete_hidden)) { in ConstructJob()
6572 << A->getAsString(Args) << /*hasReplacement=*/true in ConstructJob()
6577 Args.getLastArg(options::OPT_fvisibility_global_new_delete_EQ, in ConstructJob()
6580 A->render(Args, CmdArgs); in ConstructJob()
6588 Args.AddLastArg(CmdArgs, options::OPT_ftlsmodel_EQ); in ConstructJob()
6590 if (Args.hasFlag(options::OPT_fnew_infallible, in ConstructJob()
6594 if (Args.hasFlag(options::OPT_fno_operator_names, in ConstructJob()
6599 Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls); in ConstructJob()
6600 Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions); in ConstructJob()
6601 Args.AddLastArg(CmdArgs, options::OPT_fdigraphs, options::OPT_fno_digraphs); in ConstructJob()
6602 Args.AddLastArg(CmdArgs, options::OPT_fzero_call_used_regs_EQ); in ConstructJob()
6603 Args.AddLastArg(CmdArgs, options::OPT_fraw_string_literals, in ConstructJob()
6606 if (Args.hasFlag(options::OPT_femulated_tls, options::OPT_fno_emulated_tls, in ConstructJob()
6610 Args.addOptInFlag(CmdArgs, options::OPT_fcheck_new, in ConstructJob()
6613 if (Arg *A = Args.getLastArg(options::OPT_fzero_call_used_regs_EQ)) { in ConstructJob()
6619 << A->getAsString(Args) << TripleStr; in ConstructJob()
6624 Args.AddLastArg(CmdArgs, options::OPT_fzvector); in ConstructJob()
6626 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_show_template_tree); in ConstructJob()
6627 Args.AddLastArg(CmdArgs, options::OPT_fno_elide_type); in ConstructJob()
6631 if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ, in ConstructJob()
6635 switch (D.getOpenMPRuntime(Args)) { in ConstructJob()
6644 if (!Args.hasFlag(options::OPT_fopenmp_use_tls, in ConstructJob()
6647 Args.AddLastArg(CmdArgs, options::OPT_fopenmp_simd, in ConstructJob()
6649 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_enable_irbuilder); in ConstructJob()
6650 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_version_EQ); in ConstructJob()
6651 if (!Args.hasFlag(options::OPT_fopenmp_extensions, in ConstructJob()
6654 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_cuda_number_of_sm_EQ); in ConstructJob()
6655 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_cuda_blocks_per_sm_EQ); in ConstructJob()
6656 Args.AddAllArgs(CmdArgs, in ConstructJob()
6658 if (Args.hasFlag(options::OPT_fopenmp_optimistic_collapse, in ConstructJob()
6665 if (Args.hasFlag(options::OPT_fopenmp_cuda_mode, in ConstructJob()
6670 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_target_debug_EQ); in ConstructJob()
6671 if (Args.hasFlag(options::OPT_fopenmp_target_debug, in ConstructJob()
6677 if (Args.hasFlag(options::OPT_fopenmp_assume_teams_oversubscription, in ConstructJob()
6681 if (Args.hasFlag(options::OPT_fopenmp_assume_threads_oversubscription, in ConstructJob()
6685 if (Args.hasArg(options::OPT_fopenmp_assume_no_thread_state)) in ConstructJob()
6687 if (Args.hasArg(options::OPT_fopenmp_assume_no_nested_parallelism)) in ConstructJob()
6689 if (Args.hasArg(options::OPT_fopenmp_offload_mandatory)) in ConstructJob()
6691 if (Args.hasArg(options::OPT_fopenmp_force_usm)) in ConstructJob()
6704 Args.AddLastArg(CmdArgs, options::OPT_fopenmp_simd, in ConstructJob()
6706 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_version_EQ); in ConstructJob()
6707 Args.addOptOutFlag(CmdArgs, options::OPT_fopenmp_extensions, in ConstructJob()
6712 if (Args.hasFlag(options::OPT_offload_new_driver, in ConstructJob()
6716 SanitizeArgs.addArgs(TC, Args, CmdArgs, InputType); in ConstructJob()
6719 XRay.addArgs(TC, Args, CmdArgs, InputType); in ConstructJob()
6722 Args.getAllArgValues(options::OPT_fprofile_list_EQ)) { in ConstructJob()
6724 CmdArgs.push_back(Args.MakeArgString("-fprofile-list=" + Filename)); in ConstructJob()
6729 if (Arg *A = Args.getLastArg(options::OPT_fpatchable_function_entry_EQ)) { in ConstructJob()
6737 << A->getAsString(Args) << TripleStr; in ConstructJob()
6746 CmdArgs.push_back(Args.MakeArgString(A->getSpelling() + Twine(Size))); in ConstructJob()
6747 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
6752 Args.AddLastArg(CmdArgs, options::OPT_fms_hotpatch); in ConstructJob()
6755 Args.AddLastArg(CmdArgs, options::OPT_pg); in ConstructJob()
6758 if (Arg *A = Args.getLastArg(options::OPT_mfentry)) { in ConstructJob()
6760 A->render(Args, CmdArgs); in ConstructJob()
6763 << A->getAsString(Args) << TripleStr; in ConstructJob()
6765 if (Arg *A = Args.getLastArg(options::OPT_mnop_mcount)) { in ConstructJob()
6767 A->render(Args, CmdArgs); in ConstructJob()
6770 << A->getAsString(Args) << TripleStr; in ConstructJob()
6772 if (Arg *A = Args.getLastArg(options::OPT_mrecord_mcount)) { in ConstructJob()
6774 A->render(Args, CmdArgs); in ConstructJob()
6777 << A->getAsString(Args) << TripleStr; in ConstructJob()
6781 if (Arg *A = Args.getLastArgNoClaim(options::OPT_pg)) { in ConstructJob()
6784 << A->getAsString(Args) << TripleStr; in ConstructJob()
6787 if (Arg *A = Args.getLastArgNoClaim(options::OPT_p)) { in ConstructJob()
6790 << A->getAsString(Args) << TripleStr; in ConstructJob()
6793 if (Arg *A = Args.getLastArgNoClaim(options::OPT_p, options::OPT_pg)) { in ConstructJob()
6796 if (TC.getTriple().isOSAIX() && !Args.hasArgNoClaim(options::OPT_pg)) in ConstructJob()
6803 for (const Arg *A : Args.filtered(options::OPT_b, options::OPT_K, in ConstructJob()
6810 if (Args.getLastArg(options::OPT_fapple_kext) || in ConstructJob()
6811 (Args.hasArg(options::OPT_mkernel) && types::isCXX(InputType))) in ConstructJob()
6814 Args.AddLastArg(CmdArgs, options::OPT_altivec_src_compat); in ConstructJob()
6815 Args.AddLastArg(CmdArgs, options::OPT_flax_vector_conversions_EQ); in ConstructJob()
6816 Args.AddLastArg(CmdArgs, options::OPT_fobjc_sender_dependent_dispatch); in ConstructJob()
6817 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info); in ConstructJob()
6818 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_parseable_fixits); in ConstructJob()
6819 Args.AddLastArg(CmdArgs, options::OPT_ftime_report); in ConstructJob()
6820 Args.AddLastArg(CmdArgs, options::OPT_ftime_report_EQ); in ConstructJob()
6821 Args.AddLastArg(CmdArgs, options::OPT_ftrapv); in ConstructJob()
6822 Args.AddLastArg(CmdArgs, options::OPT_malign_double); in ConstructJob()
6823 Args.AddLastArg(CmdArgs, options::OPT_fno_temp_file); in ConstructJob()
6826 CmdArgs.push_back(Args.MakeArgString("-ftime-trace=" + Twine(Name))); in ConstructJob()
6827 Args.AddLastArg(CmdArgs, options::OPT_ftime_trace_granularity_EQ); in ConstructJob()
6828 Args.AddLastArg(CmdArgs, options::OPT_ftime_trace_verbose); in ConstructJob()
6831 if (Arg *A = Args.getLastArg(options::OPT_ftrapv_handler_EQ)) { in ConstructJob()
6836 Args.AddLastArg(CmdArgs, options::OPT_ftrap_function_EQ); in ConstructJob()
6840 if (Arg *A = Args.getLastArg(options::OPT_fwrapv, options::OPT_fno_wrapv)) { in ConstructJob()
6843 } else if (Arg *A = Args.getLastArg(options::OPT_fstrict_overflow, in ConstructJob()
6849 Args.AddLastArg(CmdArgs, options::OPT_ffinite_loops, in ConstructJob()
6852 Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings); in ConstructJob()
6853 Args.AddLastArg(CmdArgs, options::OPT_funroll_loops, in ConstructJob()
6856 Args.AddLastArg(CmdArgs, options::OPT_fstrict_flex_arrays_EQ); in ConstructJob()
6858 Args.AddLastArg(CmdArgs, options::OPT_pthread); in ConstructJob()
6860 Args.addOptInFlag(CmdArgs, options::OPT_mspeculative_load_hardening, in ConstructJob()
6863 RenderSSPOptions(D, TC, Args, CmdArgs, KernelOrKext); in ConstructJob()
6864 RenderSCPOptions(TC, Args, CmdArgs); in ConstructJob()
6865 RenderTrivialAutoVarInitOptions(D, TC, Args, CmdArgs); in ConstructJob()
6867 Args.AddLastArg(CmdArgs, options::OPT_fswift_async_fp_EQ); in ConstructJob()
6869 Args.addOptInFlag(CmdArgs, options::OPT_mstackrealign, in ConstructJob()
6872 if (Args.hasArg(options::OPT_mstack_alignment)) { in ConstructJob()
6873 StringRef alignment = Args.getLastArgValue(options::OPT_mstack_alignment); in ConstructJob()
6874 CmdArgs.push_back(Args.MakeArgString("-mstack-alignment=" + alignment)); in ConstructJob()
6877 if (Args.hasArg(options::OPT_mstack_probe_size)) { in ConstructJob()
6878 StringRef Size = Args.getLastArgValue(options::OPT_mstack_probe_size); in ConstructJob()
6881 CmdArgs.push_back(Args.MakeArgString("-mstack-probe-size=" + Size)); in ConstructJob()
6886 Args.addOptOutFlag(CmdArgs, options::OPT_mstack_arg_probe, in ConstructJob()
6889 if (Arg *A = Args.getLastArg(options::OPT_mrestrict_it, in ConstructJob()
6901 RenderOpenCLOptions(Args, CmdArgs, InputType); in ConstructJob()
6904 RenderHLSLOptions(Args, CmdArgs, InputType); in ConstructJob()
6907 RenderOpenACCOptions(D, Args, CmdArgs, InputType); in ConstructJob()
6910 if (Args.hasFlag(options::OPT_fhip_new_launch_api, in ConstructJob()
6913 Args.addOptInFlag(CmdArgs, options::OPT_fgpu_allow_device_init, in ConstructJob()
6915 Args.AddLastArg(CmdArgs, options::OPT_hipstdpar); in ConstructJob()
6916 Args.AddLastArg(CmdArgs, options::OPT_hipstdpar_interpose_alloc); in ConstructJob()
6917 Args.addOptInFlag(CmdArgs, options::OPT_fhip_kernel_arg_name, in ConstructJob()
6924 Args.addOptInFlag(CmdArgs, options::OPT_fgpu_defer_diag, in ConstructJob()
6926 if (Args.hasFlag(options::OPT_fgpu_exclude_wrong_side_overloads, in ConstructJob()
6935 if (Args.hasArg(options::OPT_nogpulib)) in ConstructJob()
6938 if (Arg *A = Args.getLastArg(options::OPT_fcf_protection_EQ)) { in ConstructJob()
6940 Args.MakeArgString(Twine("-fcf-protection=") + A->getValue())); in ConstructJob()
6943 if (Arg *A = Args.getLastArg(options::OPT_mfunction_return_EQ)) in ConstructJob()
6945 Args.MakeArgString(Twine("-mfunction-return=") + A->getValue())); in ConstructJob()
6947 Args.AddLastArg(CmdArgs, options::OPT_mindirect_branch_cs_prefix); in ConstructJob()
6953 if (Arg *A = getLastProfileSampleUseArg(Args)) { in ConstructJob()
6954 auto *PGOArg = Args.getLastArg( in ConstructJob()
6967 A->render(Args, CmdArgs); in ConstructJob()
6969 Args.AddLastArg(CmdArgs, options::OPT_fprofile_remapping_file_EQ); in ConstructJob()
6971 if (Args.hasFlag(options::OPT_fpseudo_probe_for_profiling, in ConstructJob()
6976 if (Args.hasFlag(options::OPT_funique_internal_linkage_names, in ConstructJob()
6981 RenderBuiltinOptions(TC, RawTriple, Args, CmdArgs); in ConstructJob()
6983 Args.addOptOutFlag(CmdArgs, options::OPT_fassume_sane_operator_new, in ConstructJob()
6986 if (Args.hasFlag(options::OPT_fapinotes, options::OPT_fno_apinotes, false)) in ConstructJob()
6988 if (Args.hasFlag(options::OPT_fapinotes_modules, in ConstructJob()
6991 Args.AddLastArg(CmdArgs, options::OPT_fapinotes_swift_version); in ConstructJob()
6994 if (Args.hasFlag(options::OPT_fblocks, options::OPT_fno_blocks, in ConstructJob()
6996 (Args.hasArg(options::OPT_fgnu_runtime) && in ConstructJob()
6997 Args.hasArg(options::OPT_fobjc_nonfragile_abi) && in ConstructJob()
6998 !Args.hasArg(options::OPT_fno_blocks))) { in ConstructJob()
7001 if (!Args.hasArg(options::OPT_fgnu_runtime) && !TC.hasBlocksRuntime()) in ConstructJob()
7009 if (Args.hasFlag(options::OPT_fcoro_aligned_allocation, in ConstructJob()
7014 Args.AddLastArg(CmdArgs, options::OPT_fdouble_square_bracket_attributes, in ConstructJob()
7017 Args.addOptOutFlag(CmdArgs, options::OPT_faccess_control, in ConstructJob()
7019 Args.addOptOutFlag(CmdArgs, options::OPT_felide_constructors, in ConstructJob()
7029 if (Args.hasFlag(options::OPT_fshort_enums, options::OPT_fno_short_enums, in ConstructJob()
7033 RenderCharacterOptions(Args, AuxTriple ? *AuxTriple : RawTriple, CmdArgs); in ConstructJob()
7036 if (!Args.hasFlag( in ConstructJob()
7044 if (Args.hasFlag(options::OPT_fregister_global_dtors_with_atexit, in ConstructJob()
7049 Args.addOptInFlag(CmdArgs, options::OPT_fuse_line_directives, in ConstructJob()
7053 if (Args.hasFlag(options::OPT_fminimize_whitespace, in ConstructJob()
7063 if (Args.hasFlag(options::OPT_fkeep_system_includes, in ConstructJob()
7073 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions, in ConstructJob()
7078 bool IsMSVCCompat = Args.hasFlag( in ConstructJob()
7080 (IsWindowsMSVC && Args.hasFlag(options::OPT_fms_extensions, in ConstructJob()
7085 Args.hasArg(options::OPT_fms_define_stdc)) in ConstructJob()
7090 Args.hasArg(options::OPT_fms_runtime_lib_EQ)) in ConstructJob()
7091 ProcessVSRuntimeLibrary(getToolChain(), Args, CmdArgs); in ConstructJob()
7095 if (Arg *A = Args.getLastArg(options::OPT_fgnuc_version_EQ)) { in ConstructJob()
7105 << A->getAsString(Args) << A->getValue(); in ConstructJob()
7113 Args.MakeArgString("-fgnuc-version=" + GNUCVer.getAsString())); in ConstructJob()
7116 VersionTuple MSVT = TC.computeMSVCVersion(&D, Args); in ConstructJob()
7119 Args.MakeArgString("-fms-compatibility-version=" + MSVT.getAsString())); in ConstructJob()
7124 if (const Arg *StdArg = Args.getLastArg(options::OPT__SLASH_std)) { in ConstructJob()
7132 << StdArg->getAsString(Args); in ConstructJob()
7138 if (const Arg *StdArg = Args.getLastArg(options::OPT__SLASH_std)) { in ConstructJob()
7149 << StdArg->getAsString(Args); in ConstructJob()
7162 Args.addOptInFlag(CmdArgs, options::OPT_fborland_extensions, in ConstructJob()
7166 if (Args.hasFlag(options::OPT_fdeclspec, options::OPT_fno_declspec, in ConstructJob()
7169 else if (Args.hasArg(options::OPT_fno_declspec)) in ConstructJob()
7174 if (!Args.hasFlag(options::OPT_fthreadsafe_statics, in ConstructJob()
7181 if (!Args.hasFlag(options::OPT_fassumptions, options::OPT_fno_assumptions, in ConstructJob()
7187 Args.AddLastArg(CmdArgs, options::OPT_fgnu_keywords, in ConstructJob()
7190 Args.addOptInFlag(CmdArgs, options::OPT_fgnu89_inline, in ConstructJob()
7193 const Arg *InlineArg = Args.getLastArg(options::OPT_finline_functions, in ConstructJob()
7196 if (Arg *A = Args.getLastArg(options::OPT_finline, options::OPT_fno_inline)) { in ConstructJob()
7198 A->render(Args, CmdArgs); in ConstructJob()
7200 InlineArg->render(Args, CmdArgs); in ConstructJob()
7203 Args.AddLastArg(CmdArgs, options::OPT_finline_max_stacksize_EQ); in ConstructJob()
7216 RenderModulesOptions(C, D, Args, Input, Output, HaveCxx20, CmdArgs); in ConstructJob()
7229 if (Args.hasFlag(options::OPT_fdelayed_template_parsing, in ConstructJob()
7238 if (Args.hasFlag(options::OPT_fpch_validate_input_files_content, in ConstructJob()
7241 if (Args.hasFlag(options::OPT_fpch_instantiate_templates, in ConstructJob()
7244 if (Args.hasFlag(options::OPT_fpch_codegen, options::OPT_fno_pch_codegen, in ConstructJob()
7247 if (Args.hasFlag(options::OPT_fpch_debuginfo, options::OPT_fno_pch_debuginfo, in ConstructJob()
7251 ObjCRuntime Runtime = AddObjCRuntimeArgs(Args, Inputs, CmdArgs, rewriteKind); in ConstructJob()
7252 RenderObjCOptions(TC, D, RawTriple, Args, Runtime, rewriteKind != RK_None, in ConstructJob()
7256 Args.hasFlag(options::OPT_fobjc_encode_cxx_class_template_spec, in ConstructJob()
7261 if (Args.hasFlag(options::OPT_fapplication_extension, in ConstructJob()
7268 EH = addExceptionArgs(Args, InputType, TC, KernelOrKext, Runtime, CmdArgs); in ConstructJob()
7271 Arg *A = Args.getLastArg( in ConstructJob()
7285 switch (TC.GetExceptionModel(Args)) { in ConstructJob()
7301 Args.addOptOutFlag(CmdArgs, options::OPT_fassume_sane_operator_new, in ConstructJob()
7305 Args.addOptOutFlag(CmdArgs, options::OPT_fassume_unique_vtables, in ConstructJob()
7310 Args.getLastArg(options::OPT_frelaxed_template_template_args, in ConstructJob()
7318 << A->getAsString(Args) << /*hasReplacement=*/false; in ConstructJob()
7324 Args.addLastArg(CmdArgs, options::OPT_fsized_deallocation, in ConstructJob()
7329 if (Arg *A = Args.getLastArg(options::OPT_faligned_allocation, in ConstructJob()
7340 if (Arg *A = Args.getLastArg(options::OPT_fnew_alignment_EQ, in ConstructJob()
7343 Args.MakeArgString(Twine("-fnew-alignment=") + A->getValue())); in ConstructJob()
7347 if (!Args.hasFlag(options::OPT_fconstant_cfstrings, in ConstructJob()
7349 !Args.hasFlag(options::OPT_mconstant_cfstrings, in ConstructJob()
7353 Args.addOptInFlag(CmdArgs, options::OPT_fpascal_strings, in ConstructJob()
7358 if (Arg *A = Args.getLastArg(options::OPT_fpack_struct_EQ)) { in ConstructJob()
7361 CmdArgs.push_back(Args.MakeArgString(PackStructStr)); in ConstructJob()
7362 } else if (Args.hasFlag(options::OPT_fpack_struct, in ConstructJob()
7368 bool SkipMaxTypeAlign = Args.hasArg(options::OPT_fno_max_type_align); in ConstructJob()
7369 if (Arg *A = Args.getLastArg(options::OPT_fmax_type_align_EQ)) { in ConstructJob()
7373 CmdArgs.push_back(Args.MakeArgString(MaxTypeAlignStr)); in ConstructJob()
7378 CmdArgs.push_back(Args.MakeArgString(MaxTypeAlignStr)); in ConstructJob()
7382 if (!Args.hasFlag(options::OPT_Qy, options::OPT_Qn, true)) in ConstructJob()
7386 Args.addOptInFlag(CmdArgs, options::OPT_fcommon, options::OPT_fno_common); in ConstructJob()
7390 if (!Args.hasFlag(options::OPT_fsigned_bitfields, in ConstructJob()
7393 << Args.getLastArg(options::OPT_funsigned_bitfields)->getAsString(Args); in ConstructJob()
7396 if (!Args.hasFlag(options::OPT_ffor_scope, options::OPT_fno_for_scope, true)) in ConstructJob()
7398 << Args.getLastArg(options::OPT_fno_for_scope)->getAsString(Args); in ConstructJob()
7401 if (Arg *inputCharset = Args.getLastArg(options::OPT_finput_charset_EQ)) { in ConstructJob()
7404 D.Diag(diag::err_drv_invalid_value) << inputCharset->getAsString(Args) in ConstructJob()
7409 if (Arg *execCharset = Args.getLastArg(options::OPT_fexec_charset_EQ)) { in ConstructJob()
7412 D.Diag(diag::err_drv_invalid_value) << execCharset->getAsString(Args) in ConstructJob()
7416 RenderDiagnosticsOptions(D, Args, CmdArgs); in ConstructJob()
7418 Args.addOptInFlag(CmdArgs, options::OPT_fasm_blocks, in ConstructJob()
7421 Args.addOptOutFlag(CmdArgs, options::OPT_fgnu_inline_asm, in ConstructJob()
7427 bool EnableVec = shouldEnableVectorizerAtOLevel(Args, false); in ConstructJob()
7430 if (Args.hasFlag(options::OPT_fvectorize, VectorizeAliasOption, in ConstructJob()
7435 bool EnableSLPVec = shouldEnableVectorizerAtOLevel(Args, true); in ConstructJob()
7438 if (Args.hasFlag(options::OPT_fslp_vectorize, SLPVectAliasOption, in ConstructJob()
7442 ParseMPreferVectorWidth(D, Args, CmdArgs); in ConstructJob()
7444 Args.AddLastArg(CmdArgs, options::OPT_fshow_overloads_EQ); in ConstructJob()
7445 Args.AddLastArg(CmdArgs, in ConstructJob()
7450 if (Arg *A = Args.getLastArg(options::OPT_fdollars_in_identifiers, in ConstructJob()
7458 Args.addOptInFlag(CmdArgs, options::OPT_fapple_pragma_pack, in ConstructJob()
7462 if (willEmitRemarks(Args) && checkRemarksOptions(D, Args, Triple)) in ConstructJob()
7463 renderRemarksOptions(Args, CmdArgs, Triple, Input, Output, JA); in ConstructJob()
7465 bool RewriteImports = Args.hasFlag(options::OPT_frewrite_imports, in ConstructJob()
7470 Args.addOptInFlag(CmdArgs, options::OPT_fdirectives_only, in ConstructJob()
7477 if (Args.hasFlag(options::OPT_frewrite_includes, in ConstructJob()
7483 if (Arg *A = Args.getLastArg(options::OPT_traditional, in ConstructJob()
7488 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args); in ConstructJob()
7491 Args.AddLastArg(CmdArgs, options::OPT_dM); in ConstructJob()
7492 Args.AddLastArg(CmdArgs, options::OPT_dD); in ConstructJob()
7493 Args.AddLastArg(CmdArgs, options::OPT_dI); in ConstructJob()
7495 Args.AddLastArg(CmdArgs, options::OPT_fmax_tokens_EQ); in ConstructJob()
7498 if (Arg *A = Args.getLastArg(options::OPT__serialize_diags)) { in ConstructJob()
7500 CmdArgs.push_back(Args.MakeArgString(A->getValue())); in ConstructJob()
7503 if (Args.hasArg(options::OPT_fretain_comments_from_system_headers)) in ConstructJob()
7507 Args.AddAllArgs(CmdArgs, options::OPT_fcomment_block_commands); in ConstructJob()
7509 Args.AddAllArgs(CmdArgs, options::OPT_fparse_all_comments); in ConstructJob()
7512 for (const Arg *A : Args.filtered(options::OPT_fplugin_EQ)) { in ConstructJob()
7526 for (const Arg *A : Args.filtered(options::OPT_fplugin_arg)) { in ConstructJob()
7535 D.Diag(diag::warn_drv_missing_plugin_name) << A->getAsString(Args); in ConstructJob()
7538 << PluginName << A->getAsString(Args); in ConstructJob()
7543 CmdArgs.push_back(Args.MakeArgString(Twine("-plugin-arg-") + PluginName)); in ConstructJob()
7544 CmdArgs.push_back(Args.MakeArgString(Arg)); in ConstructJob()
7548 for (const Arg *A : Args.filtered(options::OPT_fpass_plugin_EQ)) { in ConstructJob()
7550 Args.MakeArgString(Twine("-fpass-plugin=") + A->getValue())); in ConstructJob()
7555 for (const Arg *A : Args.filtered(options::OPT_vfsoverlay)) { in ConstructJob()
7561 Args.addOptInFlag(CmdArgs, options::OPT_fsafe_buffer_usage_suggestions, in ConstructJob()
7564 Args.addOptInFlag(CmdArgs, options::OPT_fexperimental_late_parse_attributes, in ConstructJob()
7568 SmallString<128> StatsFile = getStatsFileName(Args, Output, Input, D); in ConstructJob()
7570 CmdArgs.push_back(Args.MakeArgString(Twine("-stats-file=") + StatsFile)); in ConstructJob()
7577 for (auto Arg : Args.filtered(options::OPT_Xclang)) { in ConstructJob()
7588 for (const Arg *A : Args.filtered(options::OPT_mllvm)) { in ConstructJob()
7597 A->render(Args, CmdArgs); in ConstructJob()
7615 Args.AddAllArgs(CmdArgs, options::OPT_undef); in ConstructJob()
7625 Args.hasFlag(options::OPT_grecord_command_line, in ConstructJob()
7628 Args.hasFlag(options::OPT_frecord_command_line, in ConstructJob()
7633 << Args.getLastArg(options::OPT_frecord_command_line)->getAsString(Args) in ConstructJob()
7637 for (const auto &Arg : Args) in ConstructJob()
7638 Arg->render(Args, OriginalArgs); in ConstructJob()
7648 auto FlagsArgString = Args.MakeArgString(Flags); in ConstructJob()
7672 CmdArgs.push_back(Args.MakeArgString("-fembed-offload-object=" + in ConstructJob()
7678 if (Args.hasFlag(options::OPT_fcuda_short_ptr, in ConstructJob()
7692 CmdArgs.push_back(Args.MakeArgString(Twine("-cuid=") + Twine(CUID))); in ConstructJob()
7696 bool UseApproxTranscendentals = Args.hasFlag( in ConstructJob()
7698 if (Args.hasFlag(options::OPT_fgpu_approx_transcendentals, in ConstructJob()
7703 Args.claimAllArgs(options::OPT_fgpu_approx_transcendentals, in ConstructJob()
7709 Args.AddLastArg(CmdArgs, options::OPT_fgpu_default_stream_EQ); in ConstructJob()
7712 Args.AddLastArg(CmdArgs, options::OPT_foffload_uniform_block, in ConstructJob()
7715 Args.AddLastArg(CmdArgs, options::OPT_foffload_implicit_host_device_templates, in ConstructJob()
7720 Args.getLastArgValue(options::OPT_fgpu_inline_threshold_EQ); in ConstructJob()
7724 CmdArgs.append({"-mllvm", Args.MakeArgStringRef(ArgStr)}); in ConstructJob()
7729 Args.addOptOutFlag(CmdArgs, in ConstructJob()
7742 CmdArgs.push_back(Args.MakeArgString(OpenMPDeviceInput->getFilename())); in ConstructJob()
7747 handleAMDGPUCodeObjectVersionOptions(D, Args, CmdArgs); in ConstructJob()
7749 Args.addOptInFlag(CmdArgs, options::OPT_munsafe_fp_atomics, in ConstructJob()
7751 Args.addOptOutFlag(CmdArgs, options::OPT_mamdgpu_ieee, in ConstructJob()
7764 CmdArgs.push_back(Args.MakeArgString(Targets + llvm::join(Triples, ","))); in ConstructJob()
7768 Args.hasFlag(options::OPT_fvirtual_function_elimination, in ConstructJob()
7782 bool WholeProgramVTables = Args.hasFlag( in ConstructJob()
7817 Args.hasFlag(options::OPT_fsplit_lto_unit, in ConstructJob()
7825 if (Arg *A = Args.getLastArg(options::OPT_ffat_lto_objects, in ConstructJob()
7831 << A->getAsString(Args) << TC.getTripleString(); in ConstructJob()
7833 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
7837 A->render(Args, CmdArgs); in ConstructJob()
7841 if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel, in ConstructJob()
7853 Arg *A = Args.getLastArg(options::OPT_O_Group); in ConstructJob()
7872 if (Args.hasArg(options::OPT_forder_file_instrumentation)) { in ConstructJob()
7883 if (Arg *A = Args.getLastArg(options::OPT_fforce_enable_int128, in ConstructJob()
7889 Args.addOptInFlag(CmdArgs, options::OPT_fkeep_static_consts, in ConstructJob()
7891 Args.addOptInFlag(CmdArgs, options::OPT_fkeep_persistent_storage_variables, in ConstructJob()
7893 Args.addOptInFlag(CmdArgs, options::OPT_fcomplete_member_pointers, in ConstructJob()
7895 Args.addOptOutFlag(CmdArgs, options::OPT_fcxx_static_destructors, in ConstructJob()
7898 addMachineOutlinerArgs(D, Args, CmdArgs, Triple, /*IsLTO=*/false); in ConstructJob()
7900 addOutlineAtomicsArgs(D, getToolChain(), Args, CmdArgs, Triple); in ConstructJob()
7903 (Args.hasArg(options::OPT_mno_fmv) || in ConstructJob()
7905 getToolChain().GetRuntimeLibType(Args) != ToolChain::RLT_CompilerRT)) { in ConstructJob()
7911 if (Args.hasFlag(options::OPT_faddrsig, options::OPT_fno_addrsig, in ConstructJob()
7925 if (Arg *A = Args.getLastArg(options::OPT_fsymbol_partition_EQ)) { in ConstructJob()
7926 std::string Str = A->getAsString(Args); in ConstructJob()
7930 CmdArgs.push_back(Args.MakeArgString(Str)); in ConstructJob()
7943 CmdArgs.push_back(Args.MakeArgString(OutputFilename)); in ConstructJob()
7952 addDashXForInput(Args, Input, CmdArgs); in ConstructJob()
7964 Input.getInputArg().renderAsInput(Args, CmdArgs); in ConstructJob()
7980 Args.hasFlag(options::OPT__SLASH_showFilenames, in ConstructJob()
7985 if (Arg *A = Args.getLastArg(options::OPT_pg)) in ConstructJob()
7987 !Args.hasArg(options::OPT_mfentry)) in ConstructJob()
7989 << A->getAsString(Args); in ConstructJob()
7995 Args.ClaimAllArgs(options::OPT_fpch_preprocess); in ConstructJob()
7999 Args.ClaimAllArgs(options::OPT_clang_ignored_f_Group); in ConstructJob()
8000 Args.ClaimAllArgs(options::OPT_clang_ignored_m_Group); in ConstructJob()
8003 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
8171 static EHFlags parseClangCLEHFlags(const Driver &D, const ArgList &Args, in parseClangCLEHFlags() argument
8176 Args.getAllArgValues(options::OPT__SLASH_EH); in parseClangCLEHFlags()
8210 Args.hasFlag(options::OPT__SLASH_GX, options::OPT__SLASH_GX_, in parseClangCLEHFlags()
8216 if (Args.hasArg(options::OPT__SLASH_kernel)) { in parseClangCLEHFlags()
8225 void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType, in AddClangCLArgs() argument
8229 ProcessVSRuntimeLibrary(getToolChain(), Args, CmdArgs); in AddClangCLArgs()
8232 Args.getLastArg(options::OPT__SLASH_showIncludes, in AddClangCLArgs()
8240 if (Args.hasFlag(options::OPT__SLASH_GR_, options::OPT__SLASH_GR, in AddClangCLArgs()
8246 if (!isNVPTX && Args.hasFlag(options::OPT__SLASH_GS, options::OPT__SLASH_GS_, in AddClangCLArgs()
8249 CmdArgs.push_back(Args.MakeArgString(Twine(LangOptions::SSPStrong))); in AddClangCLArgs()
8255 EHFlags EH = parseClangCLEHFlags(D, Args, IsWindowsMSVC); in AddClangCLArgs()
8267 if (Args.hasArg(options::OPT__SLASH_EP)) { in AddClangCLArgs()
8272 if (Args.hasFlag(options::OPT__SLASH_Zc_dllexportInlines_, in AddClangCLArgs()
8278 if (Args.hasFlag(options::OPT__SLASH_Zc_wchar_t_, in AddClangCLArgs()
8283 if (Args.hasArg(options::OPT__SLASH_kernel)) { in AddClangCLArgs()
8286 Args.getAllArgValues(options::OPT__SLASH_arch); in AddClangCLArgs()
8299 if (Args.hasFlag(options::OPT__SLASH_GR, options::OPT__SLASH_GR_, false)) in AddClangCLArgs()
8304 Arg *MostGeneralArg = Args.getLastArg(options::OPT__SLASH_vmg); in AddClangCLArgs()
8305 Arg *BestCaseArg = Args.getLastArg(options::OPT__SLASH_vmb); in AddClangCLArgs()
8308 << MostGeneralArg->getAsString(Args) << BestCaseArg->getAsString(Args); in AddClangCLArgs()
8311 Arg *SingleArg = Args.getLastArg(options::OPT__SLASH_vms); in AddClangCLArgs()
8312 Arg *MultipleArg = Args.getLastArg(options::OPT__SLASH_vmm); in AddClangCLArgs()
8313 Arg *VirtualArg = Args.getLastArg(options::OPT__SLASH_vmv); in AddClangCLArgs()
8319 << FirstConflict->getAsString(Args) in AddClangCLArgs()
8320 << SecondConflict->getAsString(Args); in AddClangCLArgs()
8330 if (Args.hasArg(options::OPT_regcall4)) in AddClangCLArgs()
8335 Args.getLastArg(options::OPT__SLASH_Gd, options::OPT__SLASH_Gr, in AddClangCLArgs()
8369 if (Args.hasArg(options::OPT__SLASH_Gregcall4)) in AddClangCLArgs()
8372 Args.AddLastArg(CmdArgs, options::OPT_vtordisp_mode_EQ); in AddClangCLArgs()
8374 if (!Args.hasArg(options::OPT_fdiagnostics_format_EQ)) { in AddClangCLArgs()
8379 if (Args.hasArg(options::OPT__SLASH_kernel)) in AddClangCLArgs()
8382 for (const Arg *A : Args.filtered(options::OPT__SLASH_guard)) { in AddClangCLArgs()
8405 const char *Clang::getBaseInputName(const ArgList &Args, in getBaseInputName() argument
8407 return Args.MakeArgString(llvm::sys::path::filename(Input.getBaseInput())); in getBaseInputName()
8410 const char *Clang::getBaseInputStem(const ArgList &Args, in getBaseInputStem() argument
8412 const char *Str = getBaseInputName(Args, Inputs[0]); in getBaseInputStem()
8415 return Args.MakeArgString(std::string(Str, End)); in getBaseInputStem()
8420 const char *Clang::getDependencyFileName(const ArgList &Args, in getDependencyFileName() argument
8424 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) { in getDependencyFileName()
8427 return Args.MakeArgString(OutputFilename); in getDependencyFileName()
8430 return Args.MakeArgString(Twine(getBaseInputStem(Args, Inputs)) + ".d"); in getDependencyFileName()
8435 void ClangAs::AddMIPSTargetArgs(const ArgList &Args, in AddMIPSTargetArgs() argument
8440 mips::getMipsCPUAndABI(Args, Triple, CPUName, ABIName); in AddMIPSTargetArgs()
8446 void ClangAs::AddX86TargetArgs(const ArgList &Args, in AddX86TargetArgs() argument
8448 addX86AlignBranchArgs(getToolChain().getDriver(), Args, CmdArgs, in AddX86TargetArgs()
8451 if (Arg *A = Args.getLastArg(options::OPT_masm_EQ)) { in AddX86TargetArgs()
8455 CmdArgs.push_back(Args.MakeArgString("-x86-asm-syntax=" + Value)); in AddX86TargetArgs()
8463 void ClangAs::AddLoongArchTargetArgs(const ArgList &Args, in AddLoongArchTargetArgs() argument
8466 CmdArgs.push_back(loongarch::getLoongArchABI(getToolChain().getDriver(), Args, in AddLoongArchTargetArgs()
8471 void ClangAs::AddRISCVTargetArgs(const ArgList &Args, in AddRISCVTargetArgs() argument
8474 StringRef ABIName = riscv::getRISCVABI(Args, Triple); in AddRISCVTargetArgs()
8479 if (Args.hasFlag(options::OPT_mdefault_build_attributes, in AddRISCVTargetArgs()
8488 const ArgList &Args, in ConstructJob() argument
8500 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
8502 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
8504 claimNoWarnArgs(Args); in ConstructJob()
8513 CmdArgs.push_back(Args.MakeArgString(TripleStr)); in ConstructJob()
8515 getToolChain().addClangCC1ASTargetOptions(Args, CmdArgs); in ConstructJob()
8525 CmdArgs.push_back(Clang::getBaseInputName(Args, Input)); in ConstructJob()
8528 std::string CPU = getCPUName(D, Args, Triple, /*FromAs*/ true); in ConstructJob()
8531 CmdArgs.push_back(Args.MakeArgString(CPU)); in ConstructJob()
8535 getTargetFeatures(D, Triple, Args, CmdArgs, true); in ConstructJob()
8538 (void)Args.hasArg(options::OPT_force__cpusubtype__ALL); in ConstructJob()
8541 Args.AddAllArgs(CmdArgs, options::OPT_I_Group); in ConstructJob()
8544 Args.AddAllArgs(CmdArgs, options::OPT_embed_dir_EQ); in ConstructJob()
8559 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
8560 if (Arg *A = Args.getLastArg(options::OPT_g_Group)) in ConstructJob()
8566 if (const Arg *A = getDwarfNArg(Args)) in ConstructJob()
8567 EmitDwarf = checkDebugInfoOption(A, Args, D, getToolChain()); in ConstructJob()
8570 if (const Arg *A = Args.getLastArg(options::OPT_gcodeview)) in ConstructJob()
8571 EmitCodeView = checkDebugInfoOption(A, Args, D, getToolChain()); in ConstructJob()
8595 addDebugCompDirArg(Args, CmdArgs, C.getDriver().getVFS()); in ConstructJob()
8606 addDebugPrefixMapArg(getToolChain().getDriver(), getToolChain(), Args, in ConstructJob()
8612 CmdArgs.push_back(Args.MakeArgString(getClangFullVersion())); in ConstructJob()
8615 Args.AddAllArgs(CmdArgs, options::OPT_I); in ConstructJob()
8617 const unsigned DwarfVersion = getDwarfVersion(getToolChain(), Args); in ConstructJob()
8618 RenderDebugEnablingArgs(Args, CmdArgs, DebugInfoKind, DwarfVersion, in ConstructJob()
8620 renderDwarfFormat(D, Triple, Args, CmdArgs, DwarfVersion); in ConstructJob()
8621 RenderDebugInfoCompressionArgs(Args, CmdArgs, D, getToolChain()); in ConstructJob()
8629 ParsePICArgs(getToolChain(), Args); in ConstructJob()
8641 for (const auto &Arg : Args) in ConstructJob()
8642 Arg->render(Args, OriginalArgs); in ConstructJob()
8654 CmdArgs.push_back(Args.MakeArgString(Flags)); in ConstructJob()
8668 AddMIPSTargetArgs(Args, CmdArgs); in ConstructJob()
8673 AddX86TargetArgs(Args, CmdArgs); in ConstructJob()
8682 if (Args.hasFlag(options::OPT_mdefault_build_attributes, in ConstructJob()
8692 if (Args.hasArg(options::OPT_mmark_bti_property)) { in ConstructJob()
8700 AddLoongArchTargetArgs(Args, CmdArgs); in ConstructJob()
8705 AddRISCVTargetArgs(Args, CmdArgs); in ConstructJob()
8709 if (Args.hasFlag(options::OPT_mdefault_build_attributes, in ConstructJob()
8722 Args.ClaimAllArgs(options::OPT_W_Group); in ConstructJob()
8724 CollectArgsForIntegratedAssembler(C, Args, CmdArgs, in ConstructJob()
8727 Args.AddAllArgs(CmdArgs, options::OPT_mllvm); in ConstructJob()
8730 addDebugObjectName(Args, CmdArgs, DebugCompilationDir, in ConstructJob()
8743 addDebugObjectName(Args, NewArgs, DebugCompilationDir, in ConstructJob()
8758 if (getDebugFissionKind(D, Args, A) == DwarfFissionKind::Split && in ConstructJob()
8761 CmdArgs.push_back(SplitDebugName(JA, Args, Input, Output)); in ConstructJob()
8765 handleAMDGPUCodeObjectVersionOptions(D, Args, CmdArgs, /*IsCC1As=*/true); in ConstructJob()
8978 const llvm::opt::ArgList &Args, in ConstructJob() argument
9011 Args.MakeArgString(Feature.take_back() + Feature.drop_back())); in ConstructJob()
9029 CmdArgs.push_back(Args.MakeArgString("--image=" + llvm::join(Parts, ","))); in ConstructJob()
9034 Args.MakeArgString(getToolChain().GetProgramPath(getShortName())), in ConstructJob()
9041 const ArgList &Args, in ConstructJob() argument
9053 CudaInstallationDetector CudaInstallation(D, TheTriple, Args); in ConstructJob()
9055 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
9063 if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) { in ConstructJob()
9077 CmdArgs.push_back(Args.MakeArgString(Twine("--opt-level=O") + OOpt)); in ConstructJob()
9081 Args.MakeArgString("--host-triple=" + TheTriple.getTriple())); in ConstructJob()
9082 if (Args.hasArg(options::OPT_v)) in ConstructJob()
9085 if (const Arg *A = Args.getLastArg(options::OPT_g_Group)) { in ConstructJob()
9092 if (const Arg *A = Args.getLastArg(options::OPT_mcode_object_version_EQ)) { in ConstructJob()
9093 CmdArgs.push_back(Args.MakeArgString("-mllvm")); in ConstructJob()
9094 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
9098 for (const auto &A : Args.getAllArgValues(options::OPT_Xcuda_ptxas)) in ConstructJob()
9099 CmdArgs.push_back(Args.MakeArgString("--ptxas-arg=" + A)); in ConstructJob()
9102 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_EQ)) in ConstructJob()
9103 CmdArgs.push_back(Args.MakeArgString(Twine("--offload-opt=-pass-remarks=") + in ConstructJob()
9105 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_missed_EQ)) in ConstructJob()
9106 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
9108 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_analysis_EQ)) in ConstructJob()
9109 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
9111 if (Args.getLastArg(options::OPT_save_temps_EQ)) in ConstructJob()
9115 Linker->ConstructJob(C, JA, Output, Inputs, Args, LinkingOutput); in ConstructJob()
9119 for (Arg *A : Args.filtered(options::OPT_Xoffload_linker)) { in ConstructJob()
9123 Args.MakeArgString(Twine("--device-linker=") + A->getValue(1))); in ConstructJob()
9125 CmdArgs.push_back(Args.MakeArgString( in ConstructJob()
9130 Args.ClaimAllArgs(options::OPT_Xoffload_linker); in ConstructJob()
9133 if (Args.hasFlag(options::OPT_fopenmp_target_jit, in ConstructJob()
9138 for (Arg *A : Args.filtered(options::OPT_mllvm)) { in ConstructJob()
9145 CmdArgs.push_back(Args.MakeArgString(Twine("--linker-path=") + in ConstructJob()
9150 addOffloadCompressArgs(Args, CmdArgs); in ConstructJob()
9153 Args.MakeArgString(getToolChain().GetProgramPath("clang-linker-wrapper")); in ConstructJob()