Lines Matching full:options
40 #include "clang/Driver/Options.h"
65 if (Arg *A = Args.getLastArg(clang::driver::options::OPT_C, options::OPT_CC, in CheckPreprocessingOptions()
66 options::OPT_fminimize_whitespace, in CheckPreprocessingOptions()
67 options::OPT_fno_minimize_whitespace)) { in CheckPreprocessingOptions()
68 if (!Args.hasArg(options::OPT_E) && !Args.hasArg(options::OPT__SLASH_P) && in CheckPreprocessingOptions()
69 !Args.hasArg(options::OPT__SLASH_EP) && !D.CCCIsCPP()) { in CheckPreprocessingOptions()
79 if (Args.hasArg(options::OPT_static)) in CheckCodeGenerationOptions()
81 Args.getLastArg(options::OPT_dynamic, options::OPT_mdynamic_no_pic)) in CheckCodeGenerationOptions()
175 Arg *A = Args.getLastArg(options::OPT_mrecip, options::OPT_mrecip_EQ); in ParseMRecip()
279 Arg *A = Args.getLastArg(options::OPT_mprefer_vector_width_EQ); in ParseMPreferVectorWidth()
326 Args.ClaimAllArgs(options::OPT_fexceptions); in addExceptionArgs()
327 Args.ClaimAllArgs(options::OPT_fno_exceptions); in addExceptionArgs()
328 Args.ClaimAllArgs(options::OPT_fobjc_exceptions); in addExceptionArgs()
329 Args.ClaimAllArgs(options::OPT_fno_objc_exceptions); in addExceptionArgs()
330 Args.ClaimAllArgs(options::OPT_fcxx_exceptions); in addExceptionArgs()
331 Args.ClaimAllArgs(options::OPT_fno_cxx_exceptions); in addExceptionArgs()
332 Args.ClaimAllArgs(options::OPT_fasync_exceptions); in addExceptionArgs()
333 Args.ClaimAllArgs(options::OPT_fno_async_exceptions); in addExceptionArgs()
338 bool EH = Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions, in addExceptionArgs()
341 bool EHa = Args.hasFlag(options::OPT_fasync_exceptions, in addExceptionArgs()
342 options::OPT_fno_async_exceptions, false); in addExceptionArgs()
351 Args.hasFlag(options::OPT_fobjc_exceptions, in addExceptionArgs()
352 options::OPT_fno_objc_exceptions, true)) { in addExceptionArgs()
363 options::OPT_fcxx_exceptions, options::OPT_fno_cxx_exceptions, in addExceptionArgs()
364 options::OPT_fexceptions, options::OPT_fno_exceptions); in addExceptionArgs()
367 ExceptionArg->getOption().matches(options::OPT_fcxx_exceptions) || in addExceptionArgs()
368 ExceptionArg->getOption().matches(options::OPT_fexceptions); in addExceptionArgs()
380 Args.AddLastArg(CmdArgs, options::OPT_fignore_exceptions); in addExceptionArgs()
399 return Args.hasFlag(options::OPT_fautolink, options::OPT_fno_autolink, in ShouldEnableAutolink()
406 assert(A.getOption().matches(options::OPT_gN_Group) && in DebugLevelToInfoKind()
408 if (A.getOption().matches(options::OPT_g0) || in DebugLevelToInfoKind()
409 A.getOption().matches(options::OPT_ggdb0)) in DebugLevelToInfoKind()
411 if (A.getOption().matches(options::OPT_gline_tables_only) || in DebugLevelToInfoKind()
412 A.getOption().matches(options::OPT_ggdb1)) in DebugLevelToInfoKind()
414 if (A.getOption().matches(options::OPT_gline_directives_only)) in DebugLevelToInfoKind()
433 if (Args.hasArg(options::OPT_pg) && !Args.hasArg(options::OPT_mfentry)) in useFramePointerForTargetByDefault()
521 // "omit" options taking precedence over "no-omit" options is the only way in getFramePointerKind()
523 Arg *A = Args.getLastArg(options::OPT_fomit_frame_pointer, in getFramePointerKind()
524 options::OPT_fno_omit_frame_pointer); in getFramePointerKind()
525 bool OmitFP = A && A->getOption().matches(options::OPT_fomit_frame_pointer); in getFramePointerKind()
527 A && A->getOption().matches(options::OPT_fno_omit_frame_pointer); in getFramePointerKind()
529 Args.hasFlag(options::OPT_momit_leaf_frame_pointer, in getFramePointerKind()
530 options::OPT_mno_omit_leaf_frame_pointer, in getFramePointerKind()
545 if (Arg *A = Args.getLastArg(options::OPT_ffile_compilation_dir_EQ, in addDebugCompDirArg()
546 options::OPT_fdebug_compilation_dir_EQ)) { in addDebugCompDirArg()
547 if (A->getOption().matches(options::OPT_ffile_compilation_dir_EQ)) in addDebugCompDirArg()
564 for (auto *Arg : Args.filtered(options::OPT_Xclang)) in addDebugObjectName()
568 if (Args.hasArg(options::OPT_object_file_name_EQ)) in addDebugObjectName()
593 for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ, in addDebugPrefixMapArg()
594 options::OPT_fdebug_prefix_map_EQ)) { in addDebugPrefixMapArg()
607 for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ, in addMacroPrefixMapArg()
608 options::OPT_fmacro_prefix_map_EQ)) { in addMacroPrefixMapArg()
622 for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ, in addCoveragePrefixMapArg()
623 options::OPT_fcoverage_prefix_map_EQ)) { in addCoveragePrefixMapArg()
638 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) { in shouldEnableVectorizerAtOLevel()
639 if (A->getOption().matches(options::OPT_O4) || in shouldEnableVectorizerAtOLevel()
640 A->getOption().matches(options::OPT_Ofast)) in shouldEnableVectorizerAtOLevel()
643 if (A->getOption().matches(options::OPT_O0)) in shouldEnableVectorizerAtOLevel()
646 assert(A->getOption().matches(options::OPT_O) && "Must have a -O flag"); in shouldEnableVectorizerAtOLevel()
672 if (Args.hasArg(options::OPT_verify_pch) && Input.getType() == types::TY_PCH) in addDashXForInput()
676 if (Args.hasArg(options::OPT_rewrite_objc)) in addDashXForInput()
703 auto *PGOGenerateArg = Args.getLastArg(options::OPT_fprofile_generate, in addPGOAndCoverageFlags()
704 options::OPT_fprofile_generate_EQ, in addPGOAndCoverageFlags()
705 options::OPT_fno_profile_generate); in addPGOAndCoverageFlags()
707 PGOGenerateArg->getOption().matches(options::OPT_fno_profile_generate)) in addPGOAndCoverageFlags()
710 auto *CSPGOGenerateArg = Args.getLastArg(options::OPT_fcs_profile_generate, in addPGOAndCoverageFlags()
711 options::OPT_fcs_profile_generate_EQ, in addPGOAndCoverageFlags()
712 options::OPT_fno_profile_generate); in addPGOAndCoverageFlags()
714 CSPGOGenerateArg->getOption().matches(options::OPT_fno_profile_generate)) in addPGOAndCoverageFlags()
718 options::OPT_fprofile_instr_generate, in addPGOAndCoverageFlags()
719 options::OPT_fprofile_instr_generate_EQ, in addPGOAndCoverageFlags()
720 options::OPT_fno_profile_instr_generate); in addPGOAndCoverageFlags()
723 options::OPT_fno_profile_instr_generate)) in addPGOAndCoverageFlags()
757 options::OPT_fprofile_instr_generate_EQ)) in addPGOAndCoverageFlags()
787 PGOGenerateArg ? options::OPT_fprofile_generate_EQ in addPGOAndCoverageFlags()
788 : options::OPT_fcs_profile_generate_EQ)) { in addPGOAndCoverageFlags()
797 if (ProfileUseArg->getOption().matches(options::OPT_fprofile_instr_use_EQ)) in addPGOAndCoverageFlags()
801 options::OPT_fprofile_use_EQ) || in addPGOAndCoverageFlags()
803 options::OPT_fprofile_instr_use))) { in addPGOAndCoverageFlags()
813 bool EmitCovNotes = Args.hasFlag(options::OPT_ftest_coverage, in addPGOAndCoverageFlags()
814 options::OPT_fno_test_coverage, false) || in addPGOAndCoverageFlags()
815 Args.hasArg(options::OPT_coverage); in addPGOAndCoverageFlags()
822 if (Args.hasFlag(options::OPT_fcoverage_mapping, in addPGOAndCoverageFlags()
823 options::OPT_fno_coverage_mapping, false)) { in addPGOAndCoverageFlags()
832 if (Arg *A = Args.getLastArg(options::OPT_ffile_compilation_dir_EQ, in addPGOAndCoverageFlags()
833 options::OPT_fcoverage_compilation_dir_EQ)) { in addPGOAndCoverageFlags()
834 if (A->getOption().matches(options::OPT_ffile_compilation_dir_EQ)) in addPGOAndCoverageFlags()
844 if (Args.hasArg(options::OPT_fprofile_exclude_files_EQ)) { in addPGOAndCoverageFlags()
845 auto *Arg = Args.getLastArg(options::OPT_fprofile_exclude_files_EQ); in addPGOAndCoverageFlags()
846 if (!Args.hasArg(options::OPT_coverage)) in addPGOAndCoverageFlags()
856 if (Args.hasArg(options::OPT_fprofile_filter_files_EQ)) { in addPGOAndCoverageFlags()
857 auto *Arg = Args.getLastArg(options::OPT_fprofile_filter_files_EQ); in addPGOAndCoverageFlags()
858 if (!Args.hasArg(options::OPT_coverage)) in addPGOAndCoverageFlags()
867 if (const auto *A = Args.getLastArg(options::OPT_fprofile_update_EQ)) { in addPGOAndCoverageFlags()
880 if (const auto *A = Args.getLastArg(options::OPT_fprofile_function_groups)) { in addPGOAndCoverageFlags()
886 Args.getLastArg(options::OPT_fprofile_selected_function_group)) { in addPGOAndCoverageFlags()
904 if (Args.hasArg(options::OPT_fprofile_arcs) || in addPGOAndCoverageFlags()
905 Args.hasArg(options::OPT_coverage)) in addPGOAndCoverageFlags()
906 FProfileDir = Args.getLastArg(options::OPT_fprofile_dir); in addPGOAndCoverageFlags()
913 if ((Args.hasArg(options::OPT_c) || Args.hasArg(options::OPT_S)) && in addPGOAndCoverageFlags()
916 if (Arg *FinalOutput = C.getArgs().getLastArg(options::OPT__SLASH_Fo)) in addPGOAndCoverageFlags()
918 else if (Arg *FinalOutput = C.getArgs().getLastArg(options::OPT_o)) in addPGOAndCoverageFlags()
955 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) in UseRelaxAll()
956 RelaxDefault = A->getOption().matches(options::OPT_O0); in UseRelaxAll()
968 return Args.hasFlag(options::OPT_mrelax_all, options::OPT_mno_relax_all, in UseRelaxAll()
1033 const Arg *A = Args.getLastArg(options::OPT_gz_EQ); in RenderDebugInfoCompressionArgs()
1093 Args.AddLastArg(CmdArgs, options::OPT_C); in AddPreprocessingOptions()
1094 Args.AddLastArg(CmdArgs, options::OPT_CC); in AddPreprocessingOptions()
1097 Arg *ArgM = Args.getLastArg(options::OPT_MM); in AddPreprocessingOptions()
1099 ArgM = Args.getLastArg(options::OPT_M); in AddPreprocessingOptions()
1100 Arg *ArgMD = Args.getLastArg(options::OPT_MMD); in AddPreprocessingOptions()
1102 ArgMD = Args.getLastArg(options::OPT_MD); in AddPreprocessingOptions()
1113 if (Arg *MF = Args.getLastArg(options::OPT_MF)) { in AddPreprocessingOptions()
1128 for (const Arg *A : Args.filtered(options::OPT_MT, options::OPT_MQ)) { in AddPreprocessingOptions()
1131 if (A->getOption().matches(options::OPT_MT)) { in AddPreprocessingOptions()
1147 Arg *OutputOpt = Args.getLastArg(options::OPT_o); in AddPreprocessingOptions()
1165 if (ArgM->getOption().matches(options::OPT_M) || in AddPreprocessingOptions()
1166 ArgM->getOption().matches(options::OPT_MD)) in AddPreprocessingOptions()
1169 !Args.hasArg(options::OPT_fno_module_file_deps)) || in AddPreprocessingOptions()
1170 Args.hasArg(options::OPT_fmodule_file_deps)) in AddPreprocessingOptions()
1174 if (Args.hasArg(options::OPT_MG)) { in AddPreprocessingOptions()
1175 if (!ArgM || ArgM->getOption().matches(options::OPT_MD) || in AddPreprocessingOptions()
1176 ArgM->getOption().matches(options::OPT_MMD)) in AddPreprocessingOptions()
1181 Args.AddLastArg(CmdArgs, options::OPT_MP); in AddPreprocessingOptions()
1182 Args.AddLastArg(CmdArgs, options::OPT_MV); in AddPreprocessingOptions()
1196 !Args.hasArg(options::OPT_nostdinc) && in AddPreprocessingOptions()
1197 !Args.hasArg(options::OPT_nogpuinc) && in AddPreprocessingOptions()
1200 if (!Args.hasArg(options::OPT_nobuiltininc)) { in AddPreprocessingOptions()
1214 // Add -i* options, and automatically translate to in AddPreprocessingOptions()
1221 const Arg *YcArg = Args.getLastArg(options::OPT__SLASH_Yc); in AddPreprocessingOptions()
1222 const Arg *YuArg = Args.getLastArg(options::OPT__SLASH_Yu); in AddPreprocessingOptions()
1228 if (Args.hasFlag(options::OPT_fpch_instantiate_templates, in AddPreprocessingOptions()
1229 options::OPT_fno_pch_instantiate_templates, true)) in AddPreprocessingOptions()
1253 for (const Arg *A : Args.filtered(options::OPT_clang_i_Group)) { in AddPreprocessingOptions()
1254 if (A->getOption().matches(options::OPT_include) && in AddPreprocessingOptions()
1288 } else if (A->getOption().matches(options::OPT_isystem_after)) { in AddPreprocessingOptions()
1295 } else if (A->getOption().matches(options::OPT_stdlibxx_isystem)) { in AddPreprocessingOptions()
1306 {options::OPT_D, options::OPT_U, options::OPT_I_Group, in AddPreprocessingOptions()
1307 options::OPT_F, options::OPT_index_header_map}); in AddPreprocessingOptions()
1312 // souls abuse -Wp, to pass preprocessor options in gcc syntax. To in AddPreprocessingOptions()
1314 // those options. :( in AddPreprocessingOptions()
1315 Args.AddAllArgValues(CmdArgs, options::OPT_Wp_COMMA, in AddPreprocessingOptions()
1316 options::OPT_Xpreprocessor); in AddPreprocessingOptions()
1319 if (Arg *A = Args.getLastArg(options::OPT_I_)) in AddPreprocessingOptions()
1326 if (!Args.hasArg(options::OPT_isysroot)) { in AddPreprocessingOptions()
1353 bool HasStdlibxxIsystem = Args.hasArg(options::OPT_stdlibxx_isystem); in AddPreprocessingOptions()
1376 Args.AddLastArg(CmdArgs, options::OPT_ffile_reproducible, in AddPreprocessingOptions()
1377 options::OPT_fno_file_reproducible); in AddPreprocessingOptions()
1427 return Args.getAllArgValues(options::OPT_arch).size() > 1; in hasMultipleInvocations()
1437 Args.getLastArg(options::OPT_foptimization_record_file_EQ); in checkRemarksOptions()
1451 if (const Arg *A = Args.getLastArg(options::OPT_fsave_optimization_record_EQ)) in renderRemarksOptions()
1456 const Arg *A = Args.getLastArg(options::OPT_foptimization_record_file_EQ); in renderRemarksOptions()
1462 Args.getAllArgValues(options::OPT_arch).size() > 1; in renderRemarksOptions()
1466 if (Args.hasArg(options::OPT_c) || Args.hasArg(options::OPT_S)) { in renderRemarksOptions()
1467 if (Arg *FinalOutput = Args.getLastArg(options::OPT_o)) in renderRemarksOptions()
1518 Args.getLastArg(options::OPT_foptimization_record_passes_EQ)) { in renderRemarksOptions()
1530 if (!Args.hasFlag(options::OPT_faapcs_bitfield_width, in AddAAPCSVolatileBitfieldArgs()
1531 options::OPT_fno_aapcs_bitfield_width, true)) in AddAAPCSVolatileBitfieldArgs()
1534 if (Args.getLastArg(options::OPT_ForceAAPCSBitfieldLoad)) in AddAAPCSVolatileBitfieldArgs()
1545 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) { in RenderARMABI()
1571 ? Args.getLastArg(options::OPT_msign_return_address_EQ, in CollectARMPACBTIOptions()
1572 options::OPT_mbranch_protection_EQ) in CollectARMPACBTIOptions()
1573 : Args.getLastArg(options::OPT_mbranch_protection_EQ); in CollectARMPACBTIOptions()
1591 if (A->getOption().matches(options::OPT_msign_return_address_EQ)) { in CollectARMPACBTIOptions()
1628 // Determine floating point ABI from the options & target defaults. in AddARMTargetArgs()
1648 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge, in AddARMTargetArgs()
1649 options::OPT_mno_global_merge)) { in AddARMTargetArgs()
1651 if (A->getOption().matches(options::OPT_mno_global_merge)) in AddARMTargetArgs()
1657 if (!Args.hasFlag(options::OPT_mimplicit_float, in AddARMTargetArgs()
1658 options::OPT_mno_implicit_float, true)) in AddARMTargetArgs()
1661 if (Args.getLastArg(options::OPT_mcmse)) in AddARMTargetArgs()
1761 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) in RenderAArch64ABI()
1777 if (!Args.hasFlag(options::OPT_mred_zone, options::OPT_mno_red_zone, true) || in AddAArch64TargetArgs()
1778 Args.hasArg(options::OPT_mkernel) || in AddAArch64TargetArgs()
1779 Args.hasArg(options::OPT_fapple_kext)) in AddAArch64TargetArgs()
1782 if (!Args.hasFlag(options::OPT_mimplicit_float, in AddAArch64TargetArgs()
1783 options::OPT_mno_implicit_float, true)) in AddAArch64TargetArgs()
1789 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge, in AddAArch64TargetArgs()
1790 options::OPT_mno_global_merge)) { in AddAArch64TargetArgs()
1792 if (A->getOption().matches(options::OPT_mno_global_merge)) in AddAArch64TargetArgs()
1802 if (Arg *A = Args.getLastArg(options::OPT_msve_vector_bits_EQ)) { in AddAArch64TargetArgs()
1832 if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_mtune_EQ)) { in AddAArch64TargetArgs()
1875 if (Arg *A = Args.getLastArg(options::OPT_mldc1_sdc1, in AddMIPSTargetArgs()
1876 options::OPT_mno_ldc1_sdc1)) { in AddMIPSTargetArgs()
1877 if (A->getOption().matches(options::OPT_mno_ldc1_sdc1)) { in AddMIPSTargetArgs()
1883 if (Arg *A = Args.getLastArg(options::OPT_mcheck_zero_division, in AddMIPSTargetArgs()
1884 options::OPT_mno_check_zero_division)) { in AddMIPSTargetArgs()
1885 if (A->getOption().matches(options::OPT_mno_check_zero_division)) { in AddMIPSTargetArgs()
1891 if (Args.getLastArg(options::OPT_mfix4300)) { in AddMIPSTargetArgs()
1896 if (Arg *A = Args.getLastArg(options::OPT_G)) { in AddMIPSTargetArgs()
1903 Arg *GPOpt = Args.getLastArg(options::OPT_mgpopt, options::OPT_mno_gpopt); in AddMIPSTargetArgs()
1905 Args.getLastArg(options::OPT_mabicalls, options::OPT_mno_abicalls); in AddMIPSTargetArgs()
1909 // options conflict. We want to be certain that -mno-abicalls -mgpopt is in AddMIPSTargetArgs()
1918 ABICalls && ABICalls->getOption().matches(options::OPT_mno_abicalls); in AddMIPSTargetArgs()
1929 bool WantGPOpt = GPOpt && GPOpt->getOption().matches(options::OPT_mgpopt); in AddMIPSTargetArgs()
1935 Arg *LocalSData = Args.getLastArg(options::OPT_mlocal_sdata, in AddMIPSTargetArgs()
1936 options::OPT_mno_local_sdata); in AddMIPSTargetArgs()
1937 Arg *ExternSData = Args.getLastArg(options::OPT_mextern_sdata, in AddMIPSTargetArgs()
1938 options::OPT_mno_extern_sdata); in AddMIPSTargetArgs()
1939 Arg *EmbeddedData = Args.getLastArg(options::OPT_membedded_data, in AddMIPSTargetArgs()
1940 options::OPT_mno_embedded_data); in AddMIPSTargetArgs()
1943 if (LocalSData->getOption().matches(options::OPT_mlocal_sdata)) { in AddMIPSTargetArgs()
1953 if (ExternSData->getOption().matches(options::OPT_mextern_sdata)) { in AddMIPSTargetArgs()
1963 if (EmbeddedData->getOption().matches(options::OPT_membedded_data)) { in AddMIPSTargetArgs()
1977 if (Arg *A = Args.getLastArg(options::OPT_mcompact_branches_EQ)) { in AddMIPSTargetArgs()
1990 if (Arg *A = Args.getLastArg(options::OPT_mrelax_pic_calls, in AddMIPSTargetArgs()
1991 options::OPT_mno_relax_pic_calls)) { in AddMIPSTargetArgs()
1992 if (A->getOption().matches(options::OPT_mno_relax_pic_calls)) { in AddMIPSTargetArgs()
2002 if (const Arg *A = Args.getLastArg(options::OPT_mtune_EQ)) { in AddPPCTargetArgs()
2028 for (const Arg *A : Args.filtered(options::OPT_mabi_EQ)) { in AddPPCTargetArgs()
2071 if (Args.getLastArg(options::OPT_shared, options::OPT_fpic, in SetRISCVSmallDataLimit()
2072 options::OPT_fPIC)) { in SetRISCVSmallDataLimit()
2075 if (Args.hasArg(options::OPT_G)) { in SetRISCVSmallDataLimit()
2078 } else if (Args.getLastArgValue(options::OPT_mcmodel_EQ) in SetRISCVSmallDataLimit()
2083 if (Args.hasArg(options::OPT_G)) { in SetRISCVSmallDataLimit()
2086 } else if (Arg *A = Args.getLastArg(options::OPT_G)) { in SetRISCVSmallDataLimit()
2104 if (!Args.hasFlag(options::OPT_mimplicit_float, in AddRISCVTargetArgs()
2105 options::OPT_mno_implicit_float, true)) in AddRISCVTargetArgs()
2108 if (const Arg *A = Args.getLastArg(options::OPT_mtune_EQ)) { in AddRISCVTargetArgs()
2134 if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_mtune_EQ)) { in AddSparcTargetArgs()
2149 if (const Arg *A = Args.getLastArg(options::OPT_mtune_EQ)) { in AddSystemZTargetArgs()
2158 Args.hasFlag(options::OPT_mbackchain, options::OPT_mno_backchain, false); in AddSystemZTargetArgs()
2159 bool HasPackedStack = Args.hasFlag(options::OPT_mpacked_stack, in AddSystemZTargetArgs()
2160 options::OPT_mno_packed_stack, false); in AddSystemZTargetArgs()
2186 if (!Args.hasFlag(options::OPT_mred_zone, options::OPT_mno_red_zone, true) || in AddX86TargetArgs()
2187 Args.hasArg(options::OPT_mkernel) || in AddX86TargetArgs()
2188 Args.hasArg(options::OPT_fapple_kext)) in AddX86TargetArgs()
2191 if (!Args.hasFlag(options::OPT_mtls_direct_seg_refs, in AddX86TargetArgs()
2192 options::OPT_mno_tls_direct_seg_refs, true)) in AddX86TargetArgs()
2197 bool NoImplicitFloat = (Args.hasArg(options::OPT_mkernel) || in AddX86TargetArgs()
2198 Args.hasArg(options::OPT_fapple_kext)); in AddX86TargetArgs()
2200 options::OPT_msoft_float, options::OPT_mno_soft_float, in AddX86TargetArgs()
2201 options::OPT_mimplicit_float, options::OPT_mno_implicit_float)) { in AddX86TargetArgs()
2203 NoImplicitFloat = (O.matches(options::OPT_mno_implicit_float) || in AddX86TargetArgs()
2204 O.matches(options::OPT_msoft_float)); in AddX86TargetArgs()
2209 if (Arg *A = Args.getLastArg(options::OPT_masm_EQ)) { in AddX86TargetArgs()
2224 if (Arg *A = Args.getLastArg(options::OPT_mskip_rax_setup, in AddX86TargetArgs()
2225 options::OPT_mno_skip_rax_setup)) in AddX86TargetArgs()
2226 if (A->getOption().matches(options::OPT_mskip_rax_setup)) in AddX86TargetArgs()
2230 if (Args.hasFlag(options::OPT_miamcu, options::OPT_mno_iamcu, false)) { in AddX86TargetArgs()
2240 if (!Args.hasArg(clang::driver::options::OPT_march_EQ) && in AddX86TargetArgs()
2245 if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_mtune_EQ)) { in AddX86TargetArgs()
2273 if (!Args.hasArg(options::OPT_fno_short_enums)) in AddHexagonTargetArgs()
2275 if (Args.getLastArg(options::OPT_mieee_rnd_near)) { in AddHexagonTargetArgs()
2285 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) { in AddLanaiTargetArgs()
2291 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) { in AddLanaiTargetArgs()
2309 if (!Args.hasArg(options::OPT_fvisibility_EQ, in AddWebAssemblyTargetArgs()
2310 options::OPT_fvisibility_ms_compat)) in AddWebAssemblyTargetArgs()
2324 if (C.getArgs().hasArg(options::OPT__HASH_HASH_HASH)) in DumpCompilationDatabase()
2354 if (!D.SysRoot.empty() && !Args.hasArg(options::OPT__sysroot_EQ)) { in DumpCompilationDatabase()
2364 if (O.getID() == options::OPT_x) in DumpCompilationDatabase()
2367 if (O.getGroup().isValid() && O.getGroup().getID() == options::OPT_M_Group) in DumpCompilationDatabase()
2369 if (O.getID() == options::OPT_gen_cdb_fragment_path) in DumpCompilationDatabase()
2375 if (O.getID() == options::OPT_o) in DumpCompilationDatabase()
2392 if (C.getArgs().hasArg(options::OPT__HASH_HASH_HASH)) in DumpCompilationDatabaseFragmentToDir()
2445 if (Args.hasFlag(options::OPT_mincremental_linker_compatible, in CollectArgsForIntegratedAssembler()
2446 options::OPT_mno_incremental_linker_compatible, in CollectArgsForIntegratedAssembler()
2450 Args.AddLastArg(CmdArgs, options::OPT_femit_dwarf_unwind_EQ); in CollectArgsForIntegratedAssembler()
2467 Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler, in CollectArgsForIntegratedAssembler()
2468 options::OPT_mimplicit_it_EQ)) { in CollectArgsForIntegratedAssembler()
2471 if (A->getOption().getID() == options::OPT_mimplicit_it_EQ) { in CollectArgsForIntegratedAssembler()
2603 // "-gdwarf-N" options are not cc1as options. in CollectArgsForIntegratedAssembler()
2640 // The flag is a -Wa / -Xassembler argument and Options doesn't in CollectArgsForIntegratedAssembler()
2667 Args.AddLastArg(CmdArgs, options::OPT_fembed_bitcode_EQ); in CollectArgsForIntegratedAssembler()
2699 // -ffp-exception-behavior options: strict, maytrap, ignore in RenderFloatingPointOptions()
2701 // -ffp-eval-method options: double, extended, source in RenderFloatingPointOptions()
2721 if (const Arg *A = Args.getLastArg(options::OPT_flimited_precision_EQ)) { in RenderFloatingPointOptions()
2732 case options::OPT_ffp_model_EQ: { in RenderFloatingPointOptions()
2761 // granular options before being passed into cc1. in RenderFloatingPointOptions()
2768 optID = options::OPT_ffast_math; in RenderFloatingPointOptions()
2772 optID = options::OPT_ffp_contract; in RenderFloatingPointOptions()
2778 optID = options::OPT_frounding_math; in RenderFloatingPointOptions()
2794 // Options controlling individual features in RenderFloatingPointOptions()
2795 case options::OPT_fhonor_infinities: HonorINFs = true; break; in RenderFloatingPointOptions()
2796 case options::OPT_fno_honor_infinities: HonorINFs = false; break; in RenderFloatingPointOptions()
2797 case options::OPT_fhonor_nans: HonorNaNs = true; break; in RenderFloatingPointOptions()
2798 case options::OPT_fno_honor_nans: HonorNaNs = false; break; in RenderFloatingPointOptions()
2799 case options::OPT_fapprox_func: ApproxFunc = true; break; in RenderFloatingPointOptions()
2800 case options::OPT_fno_approx_func: ApproxFunc = false; break; in RenderFloatingPointOptions()
2801 case options::OPT_fmath_errno: MathErrno = true; break; in RenderFloatingPointOptions()
2802 case options::OPT_fno_math_errno: MathErrno = false; break; in RenderFloatingPointOptions()
2803 case options::OPT_fassociative_math: AssociativeMath = true; break; in RenderFloatingPointOptions()
2804 case options::OPT_fno_associative_math: AssociativeMath = false; break; in RenderFloatingPointOptions()
2805 case options::OPT_freciprocal_math: ReciprocalMath = true; break; in RenderFloatingPointOptions()
2806 case options::OPT_fno_reciprocal_math: ReciprocalMath = false; break; in RenderFloatingPointOptions()
2807 case options::OPT_fsigned_zeros: SignedZeros = true; break; in RenderFloatingPointOptions()
2808 case options::OPT_fno_signed_zeros: SignedZeros = false; break; in RenderFloatingPointOptions()
2809 case options::OPT_ftrapping_math: in RenderFloatingPointOptions()
2820 case options::OPT_fno_trapping_math: in RenderFloatingPointOptions()
2832 case options::OPT_frounding_math: in RenderFloatingPointOptions()
2837 case options::OPT_fno_rounding_math: in RenderFloatingPointOptions()
2842 case options::OPT_fdenormal_fp_math_EQ: in RenderFloatingPointOptions()
2851 case options::OPT_fdenormal_fp_math_f32_EQ: in RenderFloatingPointOptions()
2860 case options::OPT_ffp_contract: { in RenderFloatingPointOptions()
2877 case options::OPT_ffp_model_EQ: in RenderFloatingPointOptions()
2884 case options::OPT_ffp_exception_behavior_EQ: { in RenderFloatingPointOptions()
2905 case options::OPT_ffp_eval_method_EQ: { in RenderFloatingPointOptions()
2916 case options::OPT_fexcess_precision_EQ: { in RenderFloatingPointOptions()
2937 case options::OPT_ffinite_math_only: in RenderFloatingPointOptions()
2941 case options::OPT_fno_finite_math_only: in RenderFloatingPointOptions()
2946 case options::OPT_funsafe_math_optimizations: in RenderFloatingPointOptions()
2956 case options::OPT_fno_unsafe_math_optimizations: in RenderFloatingPointOptions()
2976 case options::OPT_Ofast: in RenderFloatingPointOptions()
2981 case options::OPT_ffast_math: in RenderFloatingPointOptions()
2996 case options::OPT_fno_fast_math: in RenderFloatingPointOptions()
3021 // subsequent options conflict then emit warning diagnostic. in RenderFloatingPointOptions()
3137 if (const Arg *A = Args.getLastArg(options::OPT_mfpmath_EQ)) { in RenderFloatingPointOptions()
3143 if (Args.hasFlag(options::OPT_fno_strict_float_cast_overflow, in RenderFloatingPointOptions()
3144 options::OPT_fstrict_float_cast_overflow, false)) in RenderFloatingPointOptions()
3152 if (!Args.hasArg(options::OPT__analyzer_no_default_checks)) { in RenderAnalyzerOptions()
3203 if (Arg *A = Args.getLastArg(options::OPT__analyzer_output)) in RenderAnalyzerOptions()
3214 Args.AddAllArgValues(CmdArgs, options::OPT_Xanalyzer); in RenderAnalyzerOptions()
3242 if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector, in RenderSSPOptions()
3243 options::OPT_fstack_protector_all, in RenderSSPOptions()
3244 options::OPT_fstack_protector_strong, in RenderSSPOptions()
3245 options::OPT_fstack_protector)) { in RenderSSPOptions()
3246 if (A->getOption().matches(options::OPT_fstack_protector)) in RenderSSPOptions()
3249 else if (A->getOption().matches(options::OPT_fstack_protector_strong)) in RenderSSPOptions()
3251 else if (A->getOption().matches(options::OPT_fstack_protector_all)) in RenderSSPOptions()
3269 for (const Arg *A : Args.filtered(options::OPT__param)) { in RenderSSPOptions()
3282 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_EQ)) { in RenderSSPOptions()
3297 if (!Args.hasArg(options::OPT_mstack_protector_guard_offset_EQ)) { in RenderSSPOptions()
3309 if (Arg *A = Args.getLastArg(options::OPT_mtp_mode_EQ)) { in RenderSSPOptions()
3328 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_offset_EQ)) { in RenderSSPOptions()
3348 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_reg_EQ)) { in RenderSSPOptions()
3365 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_symbol_EQ)) { in RenderSSPOptions()
3387 Args.addOptInFlag(CmdArgs, options::OPT_fstack_clash_protection, in RenderSCPOptions()
3388 options::OPT_fno_stack_clash_protection); in RenderSCPOptions()
3402 case options::OPT_ftrivial_auto_var_init: { in RenderTrivialAutoVarInitOptions()
3433 Args.getLastArg(options::OPT_ftrivial_auto_var_init_stop_after)) { in RenderTrivialAutoVarInitOptions()
3434 if (!Args.hasArg(options::OPT_ftrivial_auto_var_init) || in RenderTrivialAutoVarInitOptions()
3436 Args.getLastArg(options::OPT_ftrivial_auto_var_init)->getValue()) == in RenderTrivialAutoVarInitOptions()
3453 options::OPT_cl_opt_disable, in RenderOpenCLOptions()
3454 options::OPT_cl_strict_aliasing, in RenderOpenCLOptions()
3455 options::OPT_cl_single_precision_constant, in RenderOpenCLOptions()
3456 options::OPT_cl_finite_math_only, in RenderOpenCLOptions()
3457 options::OPT_cl_kernel_arg_info, in RenderOpenCLOptions()
3458 options::OPT_cl_unsafe_math_optimizations, in RenderOpenCLOptions()
3459 options::OPT_cl_fast_relaxed_math, in RenderOpenCLOptions()
3460 options::OPT_cl_mad_enable, in RenderOpenCLOptions()
3461 options::OPT_cl_no_signed_zeros, in RenderOpenCLOptions()
3462 options::OPT_cl_fp32_correctly_rounded_divide_sqrt, in RenderOpenCLOptions()
3463 options::OPT_cl_uniform_work_group_size in RenderOpenCLOptions()
3466 if (Arg *A = Args.getLastArg(options::OPT_cl_std_EQ)) { in RenderOpenCLOptions()
3469 } else if (Arg *A = Args.getLastArg(options::OPT_cl_ext_EQ)) { in RenderOpenCLOptions()
3480 (Args.hasArg(options::OPT_cl_std_EQ) && types::isSrcFile(InputType))) && in RenderOpenCLOptions()
3481 !Args.hasArg(options::OPT_cl_no_stdinc)) { in RenderOpenCLOptions()
3489 const unsigned ForwardedArguments[] = {options::OPT_dxil_validator_version, in RenderHLSLOptions()
3490 options::OPT_D, in RenderHLSLOptions()
3491 options::OPT_I, in RenderHLSLOptions()
3492 options::OPT_S, in RenderHLSLOptions()
3493 options::OPT_O, in RenderHLSLOptions()
3494 options::OPT_emit_llvm, in RenderHLSLOptions()
3495 options::OPT_emit_obj, in RenderHLSLOptions()
3496 options::OPT_disable_llvm_passes, in RenderHLSLOptions()
3497 options::OPT_fnative_half_type, in RenderHLSLOptions()
3498 options::OPT_hlsl_entrypoint}; in RenderHLSLOptions()
3505 if (!Args.hasArg(options::OPT_dxc_no_stdinc) && in RenderHLSLOptions()
3506 !Args.hasArg(options::OPT_nostdinc)) in RenderHLSLOptions()
3513 if (!Args.hasArg(options::OPT_fno_objc_arc, options::OPT_fobjc_arc)) { in RenderARCMigrateToolOptions()
3514 if (const Arg *A = Args.getLastArg(options::OPT_ccc_arcmt_check, in RenderARCMigrateToolOptions()
3515 options::OPT_ccc_arcmt_modify, in RenderARCMigrateToolOptions()
3516 options::OPT_ccc_arcmt_migrate)) { in RenderARCMigrateToolOptions()
3520 case options::OPT_ccc_arcmt_check: in RenderARCMigrateToolOptions()
3523 case options::OPT_ccc_arcmt_modify: in RenderARCMigrateToolOptions()
3526 case options::OPT_ccc_arcmt_migrate: in RenderARCMigrateToolOptions()
3531 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_report_output); in RenderARCMigrateToolOptions()
3532 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_emit_arc_errors); in RenderARCMigrateToolOptions()
3537 Args.ClaimAllArgs(options::OPT_ccc_arcmt_check); in RenderARCMigrateToolOptions()
3538 Args.ClaimAllArgs(options::OPT_ccc_arcmt_modify); in RenderARCMigrateToolOptions()
3539 Args.ClaimAllArgs(options::OPT_ccc_arcmt_migrate); in RenderARCMigrateToolOptions()
3542 if (const Arg *A = Args.getLastArg(options::OPT_ccc_objcmt_migrate)) { in RenderARCMigrateToolOptions()
3550 if (!Args.hasArg(options::OPT_objcmt_migrate_literals, in RenderARCMigrateToolOptions()
3551 options::OPT_objcmt_migrate_subscripting, in RenderARCMigrateToolOptions()
3552 options::OPT_objcmt_migrate_property)) { in RenderARCMigrateToolOptions()
3558 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals); in RenderARCMigrateToolOptions()
3559 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting); in RenderARCMigrateToolOptions()
3560 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property); in RenderARCMigrateToolOptions()
3563 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals); in RenderARCMigrateToolOptions()
3564 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting); in RenderARCMigrateToolOptions()
3565 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property); in RenderARCMigrateToolOptions()
3566 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_all); in RenderARCMigrateToolOptions()
3567 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readonly_property); in RenderARCMigrateToolOptions()
3568 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readwrite_property); in RenderARCMigrateToolOptions()
3569 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property_dot_syntax); in RenderARCMigrateToolOptions()
3570 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_annotation); in RenderARCMigrateToolOptions()
3571 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_instancetype); in RenderARCMigrateToolOptions()
3572 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_nsmacros); in RenderARCMigrateToolOptions()
3573 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_protocol_conformance); in RenderARCMigrateToolOptions()
3574 Args.AddLastArg(CmdArgs, options::OPT_objcmt_atomic_property); in RenderARCMigrateToolOptions()
3575 Args.AddLastArg(CmdArgs, options::OPT_objcmt_returns_innerpointer_property); in RenderARCMigrateToolOptions()
3576 Args.AddLastArg(CmdArgs, options::OPT_objcmt_ns_nonatomic_iosonly); in RenderARCMigrateToolOptions()
3577 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_designated_init); in RenderARCMigrateToolOptions()
3578 Args.AddLastArg(CmdArgs, options::OPT_objcmt_allowlist_dir_path); in RenderARCMigrateToolOptions()
3586 Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin, in RenderBuiltinOptions()
3587 !Args.hasArg(options::OPT_mkernel)); in RenderBuiltinOptions()
3592 if (Args.hasArg(options::OPT_ffreestanding)) in RenderBuiltinOptions()
3595 // Process the -fno-builtin-* options. in RenderBuiltinOptions()
3596 for (const Arg *A : Args.filtered(options::OPT_fno_builtin_)) { in RenderBuiltinOptions()
3643 if (Args.hasFlag(options::OPT_fmodules, options::OPT_fno_modules, false)) { in RenderModulesOptions()
3644 bool AllowedInCXX = Args.hasFlag(options::OPT_fcxx_modules, in RenderModulesOptions()
3645 options::OPT_fno_cxx_modules, true); in RenderModulesOptions()
3653 if (Args.hasArg(options::OPT_fmodules_ts)) { in RenderModulesOptions()
3661 if (Args.hasFlag(options::OPT_fimplicit_module_maps, in RenderModulesOptions()
3662 options::OPT_fno_implicit_module_maps, HaveClangModules)) in RenderModulesOptions()
3666 Args.addOptInFlag(CmdArgs, options::OPT_fmodules_decluse, in RenderModulesOptions()
3667 options::OPT_fno_modules_decluse); in RenderModulesOptions()
3671 if (Args.hasFlag(options::OPT_fmodules_strict_decluse, in RenderModulesOptions()
3672 options::OPT_fno_modules_strict_decluse, false)) in RenderModulesOptions()
3677 if (!Args.hasFlag(options::OPT_fimplicit_modules, in RenderModulesOptions()
3678 options::OPT_fno_implicit_modules, HaveClangModules)) { in RenderModulesOptions()
3686 if (Arg *A = Args.getLastArg(options::OPT_fmodules_cache_path)) in RenderModulesOptions()
3712 for (const Arg *A : Args.filtered(options::OPT_fprebuilt_module_path)) { in RenderModulesOptions()
3717 if (Args.hasFlag(options::OPT_fprebuilt_implicit_modules, in RenderModulesOptions()
3718 options::OPT_fno_prebuilt_implicit_modules, false)) in RenderModulesOptions()
3720 if (Args.hasFlag(options::OPT_fmodules_validate_input_files_content, in RenderModulesOptions()
3721 options::OPT_fno_modules_validate_input_files_content, in RenderModulesOptions()
3728 Args.AddLastArg(CmdArgs, options::OPT_fmodule_name_EQ); in RenderModulesOptions()
3732 Args.AddAllArgs(CmdArgs, options::OPT_fmodule_map_file); in RenderModulesOptions()
3736 if (Args.hasArg(options::OPT_fbuiltin_module_map)) { in RenderModulesOptions()
3750 Args.AddAllArgs(CmdArgs, options::OPT_fmodule_file); in RenderModulesOptions()
3752 Args.ClaimAllArgs(options::OPT_fmodule_file); in RenderModulesOptions()
3768 Args.AddLastArg(CmdArgs, options::OPT_fmodules_user_build_path); in RenderModulesOptions()
3771 Args.AddAllArgs(CmdArgs, options::OPT_fmodules_ignore_macro); in RenderModulesOptions()
3772 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_interval); in RenderModulesOptions()
3773 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_after); in RenderModulesOptions()
3776 Args.AddLastArg(CmdArgs, options::OPT_fbuild_session_timestamp); in RenderModulesOptions()
3778 if (Arg *A = Args.getLastArg(options::OPT_fbuild_session_file)) { in RenderModulesOptions()
3779 if (Args.hasArg(options::OPT_fbuild_session_timestamp)) in RenderModulesOptions()
3794 options::OPT_fmodules_validate_once_per_build_session)) { in RenderModulesOptions()
3795 if (!Args.getLastArg(options::OPT_fbuild_session_timestamp, in RenderModulesOptions()
3796 options::OPT_fbuild_session_file)) in RenderModulesOptions()
3800 options::OPT_fmodules_validate_once_per_build_session); in RenderModulesOptions()
3803 if (Args.hasFlag(options::OPT_fmodules_validate_system_headers, in RenderModulesOptions()
3804 options::OPT_fno_modules_validate_system_headers, in RenderModulesOptions()
3809 options::OPT_fmodules_disable_diagnostic_validation); in RenderModulesOptions()
3811 Args.ClaimAllArgs(options::OPT_fbuild_session_timestamp); in RenderModulesOptions()
3812 Args.ClaimAllArgs(options::OPT_fbuild_session_file); in RenderModulesOptions()
3813 Args.ClaimAllArgs(options::OPT_fmodules_validate_once_per_build_session); in RenderModulesOptions()
3814 Args.ClaimAllArgs(options::OPT_fmodules_validate_system_headers); in RenderModulesOptions()
3815 Args.ClaimAllArgs(options::OPT_fno_modules_validate_system_headers); in RenderModulesOptions()
3816 Args.ClaimAllArgs(options::OPT_fmodules_disable_diagnostic_validation); in RenderModulesOptions()
3820 Args.ClaimAllArgs(options::OPT_fmodule_output); in RenderModulesOptions()
3821 Args.ClaimAllArgs(options::OPT_fmodule_output_EQ); in RenderModulesOptions()
3829 if (const Arg *A = Args.getLastArg(options::OPT_fsigned_char, in RenderCharacterOptions()
3830 options::OPT_fno_signed_char, in RenderCharacterOptions()
3831 options::OPT_funsigned_char, in RenderCharacterOptions()
3832 options::OPT_fno_unsigned_char)) { in RenderCharacterOptions()
3833 if (A->getOption().matches(options::OPT_funsigned_char) || in RenderCharacterOptions()
3834 A->getOption().matches(options::OPT_fno_signed_char)) { in RenderCharacterOptions()
3842 Args.AddLastArg(CmdArgs, options::OPT_fchar8__t, options::OPT_fno_char8__t); in RenderCharacterOptions()
3844 if (const Arg *A = Args.getLastArg(options::OPT_fshort_wchar, in RenderCharacterOptions()
3845 options::OPT_fno_short_wchar)) { in RenderCharacterOptions()
3846 if (A->getOption().matches(options::OPT_fshort_wchar)) { in RenderCharacterOptions()
3871 if (!Args.hasFlag(options::OPT_fobjc_legacy_dispatch, in RenderObjCOptions()
3872 options::OPT_fno_objc_legacy_dispatch, in RenderObjCOptions()
3906 if (Args.hasFlag(options::OPT_fobjc_arc_exceptions, in RenderObjCOptions()
3907 options::OPT_fno_objc_arc_exceptions, in RenderObjCOptions()
3912 // Silence warning for full exception code emission options when explicitly in RenderObjCOptions()
3914 if (Args.hasArg(options::OPT_fno_objc_arc)) { in RenderObjCOptions()
3915 Args.ClaimAllArgs(options::OPT_fobjc_arc_exceptions); in RenderObjCOptions()
3916 Args.ClaimAllArgs(options::OPT_fno_objc_arc_exceptions); in RenderObjCOptions()
3923 options::OPT_fobjc_convert_messages_to_runtime_calls, in RenderObjCOptions()
3924 options::OPT_fno_objc_convert_messages_to_runtime_calls); in RenderObjCOptions()
3927 options::OPT_fno_objc_convert_messages_to_runtime_calls)) in RenderObjCOptions()
3939 Args.getLastArg(options::OPT_fobjc_weak, options::OPT_fno_objc_weak); in RenderObjCOptions()
3943 if (WeakArg->getOption().matches(options::OPT_fobjc_weak)) in RenderObjCOptions()
3950 if (Args.hasArg(options::OPT_fobjc_disable_direct_methods_for_testing)) in RenderObjCOptions()
3959 if (const Arg *A = Args.getLastArg(options::OPT__SLASH_diagnostics_classic, in RenderDiagnosticsOptions()
3960 options::OPT__SLASH_diagnostics_column, in RenderDiagnosticsOptions()
3961 options::OPT__SLASH_diagnostics_caret)) { in RenderDiagnosticsOptions()
3963 case options::OPT__SLASH_diagnostics_caret: in RenderDiagnosticsOptions()
3967 case options::OPT__SLASH_diagnostics_column: in RenderDiagnosticsOptions()
3971 case options::OPT__SLASH_diagnostics_classic: in RenderDiagnosticsOptions()
3979 if (!Args.hasFlag(options::OPT_fcaret_diagnostics, in RenderDiagnosticsOptions()
3980 options::OPT_fno_caret_diagnostics, CaretDefault)) in RenderDiagnosticsOptions()
3983 Args.addOptOutFlag(CmdArgs, options::OPT_fdiagnostics_fixit_info, in RenderDiagnosticsOptions()
3984 options::OPT_fno_diagnostics_fixit_info); in RenderDiagnosticsOptions()
3985 Args.addOptOutFlag(CmdArgs, options::OPT_fdiagnostics_show_option, in RenderDiagnosticsOptions()
3986 options::OPT_fno_diagnostics_show_option); in RenderDiagnosticsOptions()
3989 Args.getLastArg(options::OPT_fdiagnostics_show_category_EQ)) { in RenderDiagnosticsOptions()
3994 Args.addOptInFlag(CmdArgs, options::OPT_fdiagnostics_show_hotness, in RenderDiagnosticsOptions()
3995 options::OPT_fno_diagnostics_show_hotness); in RenderDiagnosticsOptions()
3998 Args.getLastArg(options::OPT_fdiagnostics_hotness_threshold_EQ)) { in RenderDiagnosticsOptions()
4004 if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_format_EQ)) { in RenderDiagnosticsOptions()
4013 options::OPT_fdiagnostics_show_note_include_stack, in RenderDiagnosticsOptions()
4014 options::OPT_fno_diagnostics_show_note_include_stack)) { in RenderDiagnosticsOptions()
4016 if (O.matches(options::OPT_fdiagnostics_show_note_include_stack)) in RenderDiagnosticsOptions()
4026 Args.getLastArg(options::OPT_fcolor_diagnostics, in RenderDiagnosticsOptions()
4027 options::OPT_fno_color_diagnostics); in RenderDiagnosticsOptions()
4028 if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_color_EQ)) { in RenderDiagnosticsOptions()
4038 if (Args.hasArg(options::OPT_fansi_escape_codes)) in RenderDiagnosticsOptions()
4041 Args.addOptOutFlag(CmdArgs, options::OPT_fshow_source_location, in RenderDiagnosticsOptions()
4042 options::OPT_fno_show_source_location); in RenderDiagnosticsOptions()
4044 if (Args.hasArg(options::OPT_fdiagnostics_absolute_paths)) in RenderDiagnosticsOptions()
4047 if (!Args.hasFlag(options::OPT_fshow_column, options::OPT_fno_show_column, in RenderDiagnosticsOptions()
4051 Args.addOptOutFlag(CmdArgs, options::OPT_fspell_checking, in RenderDiagnosticsOptions()
4052 options::OPT_fno_spell_checking); in RenderDiagnosticsOptions()
4057 Arg = Args.getLastArg(options::OPT_gsplit_dwarf, options::OPT_gsplit_dwarf_EQ, in getDebugFissionKind()
4058 options::OPT_gno_split_dwarf); in getDebugFissionKind()
4059 if (!Arg || Arg->getOption().matches(options::OPT_gno_split_dwarf)) in getDebugFissionKind()
4062 if (Arg->getOption().matches(options::OPT_gsplit_dwarf)) in getDebugFissionKind()
4080 Args.getLastArg(options::OPT_gdwarf64, options::OPT_gdwarf32); in renderDwarfFormat()
4084 if (DwarfFormatArg->getOption().matches(options::OPT_gdwarf64)) { in renderDwarfFormat()
4105 if (Args.hasFlag(options::OPT_fdebug_info_for_profiling, in renderDebugOptions()
4106 options::OPT_fno_debug_info_for_profiling, false) && in renderDebugOptions()
4108 Args.getLastArg(options::OPT_fdebug_info_for_profiling), Args, D, TC)) in renderDebugOptions()
4111 // The 'g' groups options involve a somewhat intricate sequence of decisions in renderDebugOptions()
4123 Args.hasFlag(options::OPT_fsplit_dwarf_inlining, in renderDebugOptions()
4124 options::OPT_fno_split_dwarf_inlining, false); in renderDebugOptions()
4129 if (IRInput || Args.hasArg(options::OPT_g_Group)) { in renderDebugOptions()
4138 if (const Arg *A = Args.getLastArg(options::OPT_g_Group)) { in renderDebugOptions()
4143 A->getOption().matches(options::OPT_gN_Group)) { in renderDebugOptions()
4160 Args.getLastArg(options::OPT_gTune_Group, options::OPT_ggdbN_Group)) { in renderDebugOptions()
4163 if (A->getOption().matches(options::OPT_glldb)) in renderDebugOptions()
4165 else if (A->getOption().matches(options::OPT_gsce)) in renderDebugOptions()
4167 else if (A->getOption().matches(options::OPT_gdbx)) in renderDebugOptions()
4179 if (const Arg *A = Args.getLastArg(options::OPT_gcodeview)) in renderDebugOptions()
4205 Args.ClaimAllArgs(options::OPT_fdebug_default_version); in renderDebugOptions()
4215 if (const Arg *A = Args.getLastArg(options::OPT_gstrict_dwarf)) in renderDebugOptions()
4217 if (Args.hasFlag(options::OPT_gstrict_dwarf, options::OPT_gno_strict_dwarf, in renderDebugOptions()
4222 Args.ClaimAllArgs(options::OPT_g_flags_Group); in renderDebugOptions()
4230 if (const Arg *A = Args.getLastArg(options::OPT_gcolumn_info)) in renderDebugOptions()
4232 if (!Args.hasFlag(options::OPT_gcolumn_info, options::OPT_gno_column_info, in renderDebugOptions()
4238 // FIXME: Move backend command line options to the module. in renderDebugOptions()
4239 if (Args.hasFlag(options::OPT_gmodules, options::OPT_gno_modules, false)) { in renderDebugOptions()
4242 if (checkDebugInfoOption(Args.getLastArg(options::OPT_gmodules), Args, D, in renderDebugOptions()
4259 // We parse these two '-f' options whether or not they will be used, in renderDebugOptions()
4262 options::OPT_fstandalone_debug, options::OPT_fno_standalone_debug, in renderDebugOptions()
4265 if (const Arg *A = Args.getLastArg(options::OPT_fstandalone_debug)) in renderDebugOptions()
4270 if (Args.hasFlag(options::OPT_fno_eliminate_unused_debug_types, in renderDebugOptions()
4271 options::OPT_feliminate_unused_debug_types, false)) in renderDebugOptions()
4277 if (Args.hasFlag(options::OPT_gembed_source, options::OPT_gno_embed_source, in renderDebugOptions()
4283 const Arg *A = Args.getLastArg(options::OPT_gembed_source); in renderDebugOptions()
4300 Args.addOptInFlag(CmdArgs, options::OPT_gcodeview_ghash, in renderDebugOptions()
4301 options::OPT_gno_codeview_ghash); in renderDebugOptions()
4303 Args.addOptOutFlag(CmdArgs, options::OPT_gcodeview_command_line, in renderDebugOptions()
4304 options::OPT_gno_codeview_command_line); in renderDebugOptions()
4307 Args.addOptOutFlag(CmdArgs, options::OPT_ginline_line_tables, in renderDebugOptions()
4308 options::OPT_gno_inline_line_tables); in renderDebugOptions()
4326 if (Args.hasFlag(options::OPT_fdebug_macro, options::OPT_fno_debug_macro, in renderDebugOptions()
4328 if (checkDebugInfoOption(Args.getLastArg(options::OPT_fdebug_macro), Args, in renderDebugOptions()
4334 Args.getLastArg(options::OPT_ggnu_pubnames, options::OPT_gno_gnu_pubnames, in renderDebugOptions()
4335 options::OPT_gpubnames, options::OPT_gno_pubnames); in renderDebugOptions()
4339 (!PubnamesArg->getOption().matches(options::OPT_gno_gnu_pubnames) && in renderDebugOptions()
4340 !PubnamesArg->getOption().matches(options::OPT_gno_pubnames))) in renderDebugOptions()
4342 options::OPT_gpubnames) in renderDebugOptions()
4346 Args.getLastArg(options::OPT_gsimple_template_names, in renderDebugOptions()
4347 options::OPT_gno_simple_template_names); in renderDebugOptions()
4352 if (Opt.matches(options::OPT_gsimple_template_names)) { in renderDebugOptions()
4358 if (const Arg *A = Args.getLastArg(options::OPT_gsrc_hash_EQ)) { in renderDebugOptions()
4363 Args.addOptInFlag(CmdArgs, options::OPT_fdebug_ranges_base_address, in renderDebugOptions()
4364 options::OPT_fno_debug_ranges_base_address); in renderDebugOptions()
4370 if (const Arg *A = Args.getLastArg(options::OPT_gdwarf_aranges)) in renderDebugOptions()
4377 Args.addOptInFlag(CmdArgs, options::OPT_fforce_dwarf_frame, in renderDebugOptions()
4378 options::OPT_fno_force_dwarf_frame); in renderDebugOptions()
4380 if (Args.hasFlag(options::OPT_fdebug_types_section, in renderDebugOptions()
4381 options::OPT_fno_debug_types_section, false)) { in renderDebugOptions()
4384 << Args.getLastArg(options::OPT_fdebug_types_section) in renderDebugOptions()
4388 Args.getLastArg(options::OPT_fdebug_types_section), Args, D, in renderDebugOptions()
4398 if (!Args.hasFlag(options::OPT_fdwarf_directory_asm, in renderDebugOptions()
4399 options::OPT_fno_dwarf_directory_asm, in renderDebugOptions()
4419 unsigned RTOptionID = options::OPT__SLASH_MT; in ProcessVSRuntimeLibrary()
4421 if (Args.hasArg(options::OPT__SLASH_LDd)) in ProcessVSRuntimeLibrary()
4424 RTOptionID = options::OPT__SLASH_MTd; in ProcessVSRuntimeLibrary()
4426 if (Arg *A = Args.getLastArg(options::OPT__SLASH_M_Group)) in ProcessVSRuntimeLibrary()
4429 if (Arg *A = Args.getLastArg(options::OPT_fms_runtime_lib_EQ)) { in ProcessVSRuntimeLibrary()
4431 .Case("static", options::OPT__SLASH_MT) in ProcessVSRuntimeLibrary()
4432 .Case("static_dbg", options::OPT__SLASH_MTd) in ProcessVSRuntimeLibrary()
4433 .Case("dll", options::OPT__SLASH_MD) in ProcessVSRuntimeLibrary()
4434 .Case("dll_dbg", options::OPT__SLASH_MDd) in ProcessVSRuntimeLibrary()
4435 .Default(options::OPT__SLASH_MT); in ProcessVSRuntimeLibrary()
4440 case options::OPT__SLASH_MD: in ProcessVSRuntimeLibrary()
4441 if (Args.hasArg(options::OPT__SLASH_LDd)) in ProcessVSRuntimeLibrary()
4447 case options::OPT__SLASH_MDd: in ProcessVSRuntimeLibrary()
4453 case options::OPT__SLASH_MT: in ProcessVSRuntimeLibrary()
4454 if (Args.hasArg(options::OPT__SLASH_LDd)) in ProcessVSRuntimeLibrary()
4460 case options::OPT__SLASH_MTd: in ProcessVSRuntimeLibrary()
4470 if (Args.hasArg(options::OPT_fms_omit_default_lib)) { in ProcessVSRuntimeLibrary()
4491 Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext); in ConstructJob()
4513 Args.hasFlag(options::OPT_offload_new_driver, in ConstructJob()
4514 options::OPT_no_offload_new_driver, false)); in ConstructJob()
4517 Args.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc, false); in ConstructJob()
4579 if (const Arg *MJ = Args.getLastArg(options::OPT_MJ)) { in ConstructJob()
4581 Args.ClaimAllArgs(options::OPT_MJ); in ConstructJob()
4583 Args.getLastArg(options::OPT_gen_cdb_fragment_path)) { in ConstructJob()
4586 Args.ClaimAllArgs(options::OPT_gen_cdb_fragment_path); in ConstructJob()
4621 if (Args.hasFlag(options::OPT_fsycl, options::OPT_fno_sycl, false)) { in ConstructJob()
4624 if (Arg *A = Args.getLastArg(options::OPT_sycl_std_EQ)) { in ConstructJob()
4654 // the given target. These come before user provided warning options in ConstructJob()
4676 Args.ClaimAllArgs(options::OPT_mrelax_all); in ConstructJob()
4677 Args.ClaimAllArgs(options::OPT_mno_relax_all); in ConstructJob()
4678 Args.ClaimAllArgs(options::OPT_mincremental_linker_compatible); in ConstructJob()
4679 Args.ClaimAllArgs(options::OPT_mno_incremental_linker_compatible); in ConstructJob()
4685 Args.ClaimAllArgs(options::OPT_mimplicit_it_EQ); in ConstructJob()
4691 Args.ClaimAllArgs(options::OPT_Wa_COMMA); in ConstructJob()
4692 Args.ClaimAllArgs(options::OPT_Xassembler); in ConstructJob()
4693 Args.ClaimAllArgs(options::OPT_femit_dwarf_unwind_EQ); in ConstructJob()
4706 if (Args.hasArg(options::OPT_rewrite_objc) && in ConstructJob()
4707 !Args.hasArg(options::OPT_g_Group)) in ConstructJob()
4718 (void)Args.hasArg(options::OPT_force__cpusubtype__ALL); in ConstructJob()
4734 if (Arg *ProductNameArg = Args.getLastArg(options::OPT_product_name_EQ)) in ConstructJob()
4737 Args.getLastArg(options::OPT_extract_api_ignores_EQ)) in ConstructJob()
4750 if (Triple.isAMDGCN() && IsOpenMPDevice && Args.hasArg(options::OPT_S) && in ConstructJob()
4751 Args.hasArg(options::OPT_emit_llvm)) { in ConstructJob()
4759 Args.hasArg(options::OPT_interface_stub_version_EQ) in ConstructJob()
4760 ? Args.getLastArgValue(options::OPT_interface_stub_version_EQ) in ConstructJob()
4790 !Args.hasFlag(options::OPT_offload_new_driver, in ConstructJob()
4791 options::OPT_no_offload_new_driver, false) && in ConstructJob()
4794 << Args.getLastArg(options::OPT_foffload_lto, in ConstructJob()
4795 options::OPT_foffload_lto_EQ) in ConstructJob()
4801 << Args.getLastArg(options::OPT_foffload_lto, in ConstructJob()
4802 options::OPT_foffload_lto_EQ) in ConstructJob()
4814 if (const Arg *A = Args.getLastArg(options::OPT_fthinlto_index_EQ)) { in ConstructJob()
4817 Args.AddLastArg(CmdArgs, options::OPT_fthinlto_index_EQ); in ConstructJob()
4820 if (Args.getLastArg(options::OPT_fthin_link_bitcode_EQ)) in ConstructJob()
4821 Args.AddLastArg(CmdArgs, options::OPT_fthin_link_bitcode_EQ); in ConstructJob()
4823 if (Args.getLastArg(options::OPT_save_temps_EQ)) in ConstructJob()
4824 Args.AddLastArg(CmdArgs, options::OPT_save_temps_EQ); in ConstructJob()
4826 auto *MemProfArg = Args.getLastArg(options::OPT_fmemory_profile, in ConstructJob()
4827 options::OPT_fmemory_profile_EQ, in ConstructJob()
4828 options::OPT_fno_memory_profile); in ConstructJob()
4830 !MemProfArg->getOption().matches(options::OPT_fno_memory_profile)) in ConstructJob()
4838 Args.AddLastArg(CmdArgs, options::OPT_fembed_bitcode_EQ); in ConstructJob()
4842 // Render target options. in ConstructJob()
4845 // reject options that shouldn't be supported in bitcode in ConstructJob()
4848 options::OPT_mkernel, in ConstructJob()
4849 options::OPT_fapple_kext, in ConstructJob()
4850 options::OPT_ffunction_sections, in ConstructJob()
4851 options::OPT_fno_function_sections, in ConstructJob()
4852 options::OPT_fdata_sections, in ConstructJob()
4853 options::OPT_fno_data_sections, in ConstructJob()
4854 options::OPT_fbasic_block_sections_EQ, in ConstructJob()
4855 options::OPT_funique_internal_linkage_names, in ConstructJob()
4856 options::OPT_fno_unique_internal_linkage_names, in ConstructJob()
4857 options::OPT_funique_section_names, in ConstructJob()
4858 options::OPT_fno_unique_section_names, in ConstructJob()
4859 options::OPT_funique_basic_block_section_names, in ConstructJob()
4860 options::OPT_fno_unique_basic_block_section_names, in ConstructJob()
4861 options::OPT_mrestrict_it, in ConstructJob()
4862 options::OPT_mno_restrict_it, in ConstructJob()
4863 options::OPT_mstackrealign, in ConstructJob()
4864 options::OPT_mno_stackrealign, in ConstructJob()
4865 options::OPT_mstack_alignment, in ConstructJob()
4866 options::OPT_mcmodel_EQ, in ConstructJob()
4867 options::OPT_mlong_calls, in ConstructJob()
4868 options::OPT_mno_long_calls, in ConstructJob()
4869 options::OPT_ggnu_pubnames, in ConstructJob()
4870 options::OPT_gdwarf_aranges, in ConstructJob()
4871 options::OPT_fdebug_types_section, in ConstructJob()
4872 options::OPT_fno_debug_types_section, in ConstructJob()
4873 options::OPT_fdwarf_directory_asm, in ConstructJob()
4874 options::OPT_fno_dwarf_directory_asm, in ConstructJob()
4875 options::OPT_mrelax_all, in ConstructJob()
4876 options::OPT_mno_relax_all, in ConstructJob()
4877 options::OPT_ftrap_function_EQ, in ConstructJob()
4878 options::OPT_ffixed_r9, in ConstructJob()
4879 options::OPT_mfix_cortex_a53_835769, in ConstructJob()
4880 options::OPT_mno_fix_cortex_a53_835769, in ConstructJob()
4881 options::OPT_ffixed_x18, in ConstructJob()
4882 options::OPT_mglobal_merge, in ConstructJob()
4883 options::OPT_mno_global_merge, in ConstructJob()
4884 options::OPT_mred_zone, in ConstructJob()
4885 options::OPT_mno_red_zone, in ConstructJob()
4886 options::OPT_Wa_COMMA, in ConstructJob()
4887 options::OPT_Xassembler, in ConstructJob()
4888 options::OPT_mllvm, in ConstructJob()
4894 // Render the CodeGen options that need to be passed. in ConstructJob()
4895 Args.addOptOutFlag(CmdArgs, options::OPT_foptimize_sibling_calls, in ConstructJob()
4896 options::OPT_fno_optimize_sibling_calls); in ConstructJob()
4917 if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) { in ConstructJob()
4918 if (A->getOption().matches(options::OPT_O4)) { in ConstructJob()
4971 if (Args.hasFlag(options::OPT_fdiscard_value_names, in ConstructJob()
4972 options::OPT_fno_discard_value_names, !IsAssertBuild)) { in ConstructJob()
4973 if (Args.hasArg(options::OPT_fdiscard_value_names) && in ConstructJob()
4989 if (Args.hasArg(options::OPT_static)) in ConstructJob()
4992 if (Args.hasArg(options::OPT_municode)) in ConstructJob()
4999 (isa<PreprocessJobAction>(JA) && Args.hasArg(options::OPT__analyze))) in ConstructJob()
5006 for (auto *Arg : Args.filtered(options::OPT_Xclang)) in ConstructJob()
5012 for (auto *Arg : Args.filtered(options::OPT_Xanalyzer)) in ConstructJob()
5031 if (const Arg *A = Args.getLastArg(options::OPT_falign_loops_EQ)) { in ConstructJob()
5050 Args.getLastArg(options::OPT_mno_pic_data_is_text_relative, in ConstructJob()
5051 options::OPT_mpic_data_is_text_relative); in ConstructJob()
5055 options::OPT_mno_pic_data_is_text_relative)) { in ConstructJob()
5074 if (Args.hasArg(options::OPT_mcmse) && in ConstructJob()
5075 !Args.hasArg(options::OPT_fallow_unsupported)) { in ConstructJob()
5083 !Args.hasArg(options::OPT_fallow_unsupported)) in ConstructJob()
5107 if (Arg *A = Args.getLastArg(options::OPT_meabi)) { in ConstructJob()
5124 Arg *A = Args.getLastArg(options::OPT_fsemantic_interposition, in ConstructJob()
5125 options::OPT_fno_semantic_interposition); in ConstructJob()
5132 else if (A->getOption().matches(options::OPT_fsemantic_interposition)) in ConstructJob()
5141 if (Arg *A = Args.getLastArg(options::OPT_mthread_model)) { in ConstructJob()
5154 if (Arg *A = Args.getLastArg(options::OPT_fveclib)) { in ConstructJob()
5175 if (Args.hasFlag(options::OPT_fmerge_all_constants, in ConstructJob()
5176 options::OPT_fno_merge_all_constants, false)) in ConstructJob()
5179 Args.addOptOutFlag(CmdArgs, options::OPT_fdelete_null_pointer_checks, in ConstructJob()
5180 options::OPT_fno_delete_null_pointer_checks); in ConstructJob()
5182 // LLVM Code Generator Options. in ConstructJob()
5184 for (const Arg *A : Args.filtered(options::OPT_frewrite_map_file_EQ)) { in ConstructJob()
5194 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ_vec_extabi, in ConstructJob()
5195 options::OPT_mabi_EQ_vec_default)) { in ConstructJob()
5199 if (A->getOption().getID() == options::OPT_mabi_EQ_vec_extabi) in ConstructJob()
5205 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ_quadword_atomics)) { in ConstructJob()
5212 if (Arg *A = Args.getLastArg(options::OPT_mlong_double_128)) { in ConstructJob()
5220 if (Arg *A = Args.getLastArg(options::OPT_Wframe_larger_than_EQ)) { in ConstructJob()
5231 Args.addOptOutFlag(CmdArgs, options::OPT_fjump_tables, in ConstructJob()
5232 options::OPT_fno_jump_tables); in ConstructJob()
5233 Args.addOptInFlag(CmdArgs, options::OPT_fprofile_sample_accurate, in ConstructJob()
5234 options::OPT_fno_profile_sample_accurate); in ConstructJob()
5235 Args.addOptOutFlag(CmdArgs, options::OPT_fpreserve_as_comments, in ConstructJob()
5236 options::OPT_fno_preserve_as_comments); in ConstructJob()
5238 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) { in ConstructJob()
5243 if (Arg *A = Args.getLastArg(options::OPT_maix_struct_return, in ConstructJob()
5244 options::OPT_msvr4_struct_return)) { in ConstructJob()
5248 } else if (A->getOption().matches(options::OPT_maix_struct_return)) { in ConstructJob()
5251 assert(A->getOption().matches(options::OPT_msvr4_struct_return)); in ConstructJob()
5256 if (Arg *A = Args.getLastArg(options::OPT_fpcc_struct_return, in ConstructJob()
5257 options::OPT_freg_struct_return)) { in ConstructJob()
5261 } else if (A->getOption().matches(options::OPT_fpcc_struct_return)) { in ConstructJob()
5264 assert(A->getOption().matches(options::OPT_freg_struct_return)); in ConstructJob()
5269 if (Args.hasFlag(options::OPT_mrtd, options::OPT_mno_rtd, false)) in ConstructJob()
5272 if (Args.hasArg(options::OPT_fenable_matrix)) { in ConstructJob()
5296 Args.addOptOutFlag(CmdArgs, options::OPT_fzero_initialized_in_bss, in ConstructJob()
5297 options::OPT_fno_zero_initialized_in_bss); in ConstructJob()
5303 OFastEnabled ? options::OPT_Ofast : options::OPT_fstrict_aliasing; in ConstructJob()
5310 if (!Args.hasFlag(options::OPT_fstrict_aliasing, StrictAliasingAliasOption, in ConstructJob()
5311 options::OPT_fno_strict_aliasing, StrictAliasingDefault)) in ConstructJob()
5313 if (!Args.hasFlag(options::OPT_fstruct_path_tbaa, in ConstructJob()
5314 options::OPT_fno_struct_path_tbaa, true)) in ConstructJob()
5316 Args.addOptInFlag(CmdArgs, options::OPT_fstrict_enums, in ConstructJob()
5317 options::OPT_fno_strict_enums); in ConstructJob()
5318 Args.addOptOutFlag(CmdArgs, options::OPT_fstrict_return, in ConstructJob()
5319 options::OPT_fno_strict_return); in ConstructJob()
5320 Args.addOptInFlag(CmdArgs, options::OPT_fallow_editor_placeholders, in ConstructJob()
5321 options::OPT_fno_allow_editor_placeholders); in ConstructJob()
5322 Args.addOptInFlag(CmdArgs, options::OPT_fstrict_vtable_pointers, in ConstructJob()
5323 options::OPT_fno_strict_vtable_pointers); in ConstructJob()
5324 Args.addOptInFlag(CmdArgs, options::OPT_fforce_emit_vtables, in ConstructJob()
5325 options::OPT_fno_force_emit_vtables); in ConstructJob()
5326 Args.addOptOutFlag(CmdArgs, options::OPT_foptimize_sibling_calls, in ConstructJob()
5327 options::OPT_fno_optimize_sibling_calls); in ConstructJob()
5328 Args.addOptOutFlag(CmdArgs, options::OPT_fescaping_block_tail_calls, in ConstructJob()
5329 options::OPT_fno_escaping_block_tail_calls); in ConstructJob()
5331 Args.AddLastArg(CmdArgs, options::OPT_ffine_grained_bitfield_accesses, in ConstructJob()
5332 options::OPT_fno_fine_grained_bitfield_accesses); in ConstructJob()
5334 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_relative_cxx_abi_vtables, in ConstructJob()
5335 options::OPT_fno_experimental_relative_cxx_abi_vtables); in ConstructJob()
5338 Args.addOptInFlag(CmdArgs, options::OPT_fsplit_stack, in ConstructJob()
5339 options::OPT_fno_split_stack); in ConstructJob()
5342 if (Args.hasFlag(options::OPT_fprotect_parens, in ConstructJob()
5343 options::OPT_fno_protect_parens, false)) in ConstructJob()
5348 if (Arg *A = Args.getLastArg(options::OPT_fextend_args_EQ)) { in ConstructJob()
5362 if (Arg *A = Args.getLastArg(options::OPT_mdouble_EQ)) { in ConstructJob()
5370 if (Arg *A = Args.getLastArg(options::OPT_LongDouble_Group)) { in ConstructJob()
5374 (A->getOption().getID() != options::OPT_mlong_double_80)) in ConstructJob()
5384 if (!Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm, in ConstructJob()
5390 if (Arg *A = Args.getLastArg(options::OPT_fbinutils_version_EQ)) { in ConstructJob()
5409 if (Args.hasArg(options::OPT_fdebug_pass_structure)) { in ConstructJob()
5413 if (Args.hasArg(options::OPT_fdebug_pass_arguments)) { in ConstructJob()
5429 if (Args.hasFlag(options::OPT_mms_bitfields, options::OPT_mno_ms_bitfields, in ConstructJob()
5437 if (Arg *A = Args.getLastArg(options::OPT_fdirect_access_external_data, in ConstructJob()
5438 options::OPT_fno_direct_access_external_data)) in ConstructJob()
5439 if (A->getOption().matches(options::OPT_fdirect_access_external_data) != in ConstructJob()
5443 if (Args.hasFlag(options::OPT_fno_plt, options::OPT_fplt, false)) { in ConstructJob()
5451 Args.hasFlag(options::OPT_ffreestanding, options::OPT_fhosted, false) || in ConstructJob()
5456 Args.AddLastArg(CmdArgs, options::OPT_fno_knr_functions); in ConstructJob()
5469 options::OPT_fasynchronous_unwind_tables, in ConstructJob()
5470 options::OPT_fno_asynchronous_unwind_tables, in ConstructJob()
5474 Args.hasFlag(options::OPT_funwind_tables, options::OPT_fno_unwind_tables, in ConstructJob()
5483 if (!Args.getLastArg(options::OPT_gpu_use_aux_triple_only) && in ConstructJob()
5499 if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) { in ConstructJob()
5516 if (Arg *A = Args.getLastArg(options::OPT_mtls_size_EQ)) { in ConstructJob()
5526 Args.AddLastArg(CmdArgs, options::OPT_mtls_size_EQ); in ConstructJob()
5569 if (Args.hasFlag(options::OPT_fjmc, options::OPT_fno_jmc, false)) { in ConstructJob()
5599 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) { in ConstructJob()
5606 if (!Args.hasArg(options::OPT_fallow_unsupported)) { in ConstructJob()
5610 if ((Unsupported = Args.getLastArg(options::OPT_fapple_kext)) || in ConstructJob()
5611 (Unsupported = Args.getLastArg(options::OPT_mkernel))) in ConstructJob()
5616 if ((Unsupported = Args.getLastArg(options::OPT_faltivec))) in ConstructJob()
5620 if ((Unsupported = Args.getLastArg(options::OPT_fno_altivec))) in ConstructJob()
5625 Args.AddAllArgs(CmdArgs, options::OPT_v); in ConstructJob()
5627 if (Args.getLastArg(options::OPT_H)) { in ConstructJob()
5631 Args.AddAllArgs(CmdArgs, options::OPT_fshow_skipped_includes); in ConstructJob()
5647 Args.AddLastArg(CmdArgs, options::OPT_P); in ConstructJob()
5648 Args.AddLastArg(CmdArgs, options::OPT_print_ivar_layout); in ConstructJob()
5664 if (Args.hasArg(options::OPT_fcrash_diagnostics_dir)) { in ConstructJob()
5665 StringRef Dir = Args.getLastArgValue(options::OPT_fcrash_diagnostics_dir); in ConstructJob()
5672 if (Args.hasFlag(options::OPT_ffunction_sections, in ConstructJob()
5673 options::OPT_fno_function_sections, UseSeparateSections)) { in ConstructJob()
5677 if (Arg *A = Args.getLastArg(options::OPT_fbasic_block_sections_EQ)) { in ConstructJob()
5698 if (Args.hasFlag(options::OPT_fdata_sections, options::OPT_fno_data_sections, in ConstructJob()
5703 Args.addOptOutFlag(CmdArgs, options::OPT_funique_section_names, in ConstructJob()
5704 options::OPT_fno_unique_section_names); in ConstructJob()
5705 Args.addOptInFlag(CmdArgs, options::OPT_funique_internal_linkage_names, in ConstructJob()
5706 options::OPT_fno_unique_internal_linkage_names); in ConstructJob()
5707 Args.addOptInFlag(CmdArgs, options::OPT_funique_basic_block_section_names, in ConstructJob()
5708 options::OPT_fno_unique_basic_block_section_names); in ConstructJob()
5710 if (Arg *A = Args.getLastArg(options::OPT_fsplit_machine_functions, in ConstructJob()
5711 options::OPT_fno_split_machine_functions)) { in ConstructJob()
5714 if (A->getOption().matches(options::OPT_fsplit_machine_functions)) in ConstructJob()
5722 Args.AddLastArg(CmdArgs, options::OPT_finstrument_functions, in ConstructJob()
5723 options::OPT_finstrument_functions_after_inlining, in ConstructJob()
5724 options::OPT_finstrument_function_entry_bare); in ConstructJob()
5732 Args.AddLastArg(CmdArgs, options::OPT_fclang_abi_compat_EQ); in ConstructJob()
5735 Args.hasArg(options::OPT_fsample_profile_use_profi)) { in ConstructJob()
5742 !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { in ConstructJob()
5747 // Pass options for controlling the default header search paths. in ConstructJob()
5748 if (Args.hasArg(options::OPT_nostdinc)) { in ConstructJob()
5752 if (Args.hasArg(options::OPT_nostdlibinc)) in ConstructJob()
5754 Args.AddLastArg(CmdArgs, options::OPT_nostdincxx); in ConstructJob()
5755 Args.AddLastArg(CmdArgs, options::OPT_nobuiltininc); in ConstructJob()
5762 Args.AddLastArg(CmdArgs, options::OPT_working_directory); in ConstructJob()
5766 // Add preprocessing options like -I, -D, etc. if we are using the in ConstructJob()
5775 // When building with ccache, it will pass -D options to clang even on in ConstructJob()
5777 Args.ClaimAllArgs(options::OPT_D); in ConstructJob()
5780 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) { in ConstructJob()
5781 if (A->getOption().matches(options::OPT_O4)) { in ConstructJob()
5789 // Warn about ignored options to clang. in ConstructJob()
5791 Args.filtered(options::OPT_clang_ignored_gcc_optimization_f_Group)) { in ConstructJob()
5797 Args.filtered(options::OPT_clang_ignored_legacy_options_Group)) { in ConstructJob()
5804 Args.AddAllArgs(CmdArgs, options::OPT_R_Group); in ConstructJob()
5807 Args.filtered(options::OPT_W_Group, options::OPT__SLASH_wd)) { in ConstructJob()
5809 if (A->getOption().getID() == options::OPT__SLASH_wd) { in ConstructJob()
5826 if (Args.hasFlag(options::OPT_pedantic, options::OPT_no_pedantic, false)) in ConstructJob()
5828 Args.AddLastArg(CmdArgs, options::OPT_pedantic_errors); in ConstructJob()
5829 Args.AddLastArg(CmdArgs, options::OPT_w); in ConstructJob()
5831 Args.addOptInFlag(CmdArgs, options::OPT_ffixed_point, in ConstructJob()
5832 options::OPT_fno_fixed_point); in ConstructJob()
5834 if (Arg *A = Args.getLastArg(options::OPT_fcxx_abi_EQ)) in ConstructJob()
5837 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_relative_cxx_abi_vtables, in ConstructJob()
5838 options::OPT_fno_experimental_relative_cxx_abi_vtables); in ConstructJob()
5840 if (Arg *A = Args.getLastArg(options::OPT_ffuchsia_api_level_EQ)) in ConstructJob()
5850 const Arg *Std = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi); in ConstructJob()
5852 if (Std->getOption().matches(options::OPT_ansi)) in ConstructJob()
5861 if (Arg *A = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi, in ConstructJob()
5862 options::OPT_ftrigraphs, in ConstructJob()
5863 options::OPT_fno_trigraphs)) in ConstructJob()
5874 if (!Args.hasArg(options::OPT__SLASH_std)) { in ConstructJob()
5875 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ, "-std=", in ConstructJob()
5883 Args.AddLastArg(CmdArgs, options::OPT_ftrigraphs, in ConstructJob()
5884 options::OPT_fno_trigraphs); in ConstructJob()
5900 Args.getLastArg(options::OPT_Wwrite_strings, in ConstructJob()
5901 options::OPT_Wno_write_strings, options::OPT_w); in ConstructJob()
5903 WriteStrings->getOption().matches(options::OPT_Wwrite_strings)) in ConstructJob()
5911 Args.hasFlag(options::OPT_Wdeprecated, options::OPT_Wno_deprecated, in ConstructJob()
5917 if (Arg *Asm = Args.getLastArg(options::OPT_fasm, options::OPT_fno_asm)) { in ConstructJob()
5918 if (Asm->getOption().matches(options::OPT_fasm)) in ConstructJob()
5933 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_depth_, in ConstructJob()
5934 options::OPT_ftemplate_depth_EQ)) { in ConstructJob()
5939 if (Arg *A = Args.getLastArg(options::OPT_foperator_arrow_depth_EQ)) { in ConstructJob()
5944 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_depth_EQ)) { in ConstructJob()
5949 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_steps_EQ)) { in ConstructJob()
5954 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_library); in ConstructJob()
5956 if (Args.hasArg(options::OPT_fexperimental_new_constant_interpreter)) in ConstructJob()
5959 if (Arg *A = Args.getLastArg(options::OPT_fbracket_depth_EQ)) { in ConstructJob()
5964 if (Arg *A = Args.getLastArg(options::OPT_Wlarge_by_value_copy_EQ, in ConstructJob()
5965 options::OPT_Wlarge_by_value_copy_def)) { in ConstructJob()
5973 if (Args.hasArg(options::OPT_relocatable_pch)) in ConstructJob()
5976 if (const Arg *A = Args.getLastArg(options::OPT_fcf_runtime_abi_EQ)) { in ConstructJob()
5987 if (Arg *A = Args.getLastArg(options::OPT_fconstant_string_class_EQ)) { in ConstructJob()
5992 if (Arg *A = Args.getLastArg(options::OPT_ftabstop_EQ)) { in ConstructJob()
5997 Args.addOptInFlag(CmdArgs, options::OPT_fstack_size_section, in ConstructJob()
5998 options::OPT_fno_stack_size_section); in ConstructJob()
6000 if (Args.hasArg(options::OPT_fstack_usage)) { in ConstructJob()
6003 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) { in ConstructJob()
6013 if (Arg *A = Args.getLastArg(options::OPT_ferror_limit_EQ)) in ConstructJob()
6018 if (Arg *A = Args.getLastArg(options::OPT_fmacro_backtrace_limit_EQ)) { in ConstructJob()
6023 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_backtrace_limit_EQ)) { in ConstructJob()
6028 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_backtrace_limit_EQ)) { in ConstructJob()
6033 if (Arg *A = Args.getLastArg(options::OPT_fspell_checking_limit_EQ)) { in ConstructJob()
6040 if (Arg *A = Args.getLastArg(options::OPT_fmessage_length_EQ)) { in ConstructJob()
6054 if (Arg *A = Args.getLastArg(options::OPT_frandomize_layout_seed_EQ)) in ConstructJob()
6058 if (Arg *A = Args.getLastArg(options::OPT_frandomize_layout_seed_file_EQ)) in ConstructJob()
6063 if (const Arg *A = Args.getLastArg(options::OPT_fvisibility_EQ, in ConstructJob()
6064 options::OPT_fvisibility_ms_compat)) { in ConstructJob()
6065 if (A->getOption().matches(options::OPT_fvisibility_EQ)) { in ConstructJob()
6068 assert(A->getOption().matches(options::OPT_fvisibility_ms_compat)); in ConstructJob()
6079 // PS4/PS5 process these options in addClangTargetOptions. in ConstructJob()
6082 Args.getLastArg(options::OPT_fvisibility_from_dllstorageclass, in ConstructJob()
6083 options::OPT_fno_visibility_from_dllstorageclass)) { in ConstructJob()
6085 options::OPT_fvisibility_from_dllstorageclass)) { in ConstructJob()
6087 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_dllexport_EQ); in ConstructJob()
6088 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_nodllstorageclass_EQ); in ConstructJob()
6089 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_externs_dllimport_EQ); in ConstructJob()
6091 options::OPT_fvisibility_externs_nodllstorageclass_EQ); in ConstructJob()
6096 if (const Arg *A = Args.getLastArg(options::OPT_mignore_xcoff_visibility)) { in ConstructJob()
6105 Args.getLastArg(options::OPT_mdefault_visibility_export_mapping_EQ)) { in ConstructJob()
6113 if (Args.hasFlag(options::OPT_fvisibility_inlines_hidden, in ConstructJob()
6114 options::OPT_fno_visibility_inlines_hidden, false)) in ConstructJob()
6117 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_inlines_hidden_static_local_var, in ConstructJob()
6118 options::OPT_fno_visibility_inlines_hidden_static_local_var); in ConstructJob()
6119 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_global_new_delete_hidden); in ConstructJob()
6120 Args.AddLastArg(CmdArgs, options::OPT_ftlsmodel_EQ); in ConstructJob()
6122 if (Args.hasFlag(options::OPT_fnew_infallible, in ConstructJob()
6123 options::OPT_fno_new_infallible, false)) in ConstructJob()
6126 if (Args.hasFlag(options::OPT_fno_operator_names, in ConstructJob()
6127 options::OPT_foperator_names, false)) in ConstructJob()
6130 // Forward -f (flag) options which we can pass directly. in ConstructJob()
6131 Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls); in ConstructJob()
6132 Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions); in ConstructJob()
6133 Args.AddLastArg(CmdArgs, options::OPT_fdigraphs, options::OPT_fno_digraphs); in ConstructJob()
6134 Args.AddLastArg(CmdArgs, options::OPT_femulated_tls, in ConstructJob()
6135 options::OPT_fno_emulated_tls); in ConstructJob()
6136 Args.AddLastArg(CmdArgs, options::OPT_fzero_call_used_regs_EQ); in ConstructJob()
6138 if (Arg *A = Args.getLastArg(options::OPT_fzero_call_used_regs_EQ)) { in ConstructJob()
6149 Args.AddLastArg(CmdArgs, options::OPT_fzvector); in ConstructJob()
6151 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_show_template_tree); in ConstructJob()
6152 Args.AddLastArg(CmdArgs, options::OPT_fno_elide_type); in ConstructJob()
6156 if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ, in ConstructJob()
6157 options::OPT_fno_openmp, false) && in ConstructJob()
6168 // options and pass the right information to the frontend. in ConstructJob()
6169 if (!Args.hasFlag(options::OPT_fopenmp_use_tls, in ConstructJob()
6170 options::OPT_fnoopenmp_use_tls, /*Default=*/true)) in ConstructJob()
6172 Args.AddLastArg(CmdArgs, options::OPT_fopenmp_simd, in ConstructJob()
6173 options::OPT_fno_openmp_simd); in ConstructJob()
6174 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_enable_irbuilder); in ConstructJob()
6175 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_version_EQ); in ConstructJob()
6176 if (!Args.hasFlag(options::OPT_fopenmp_extensions, in ConstructJob()
6177 options::OPT_fno_openmp_extensions, /*Default=*/true)) in ConstructJob()
6179 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_cuda_number_of_sm_EQ); in ConstructJob()
6180 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_cuda_blocks_per_sm_EQ); in ConstructJob()
6182 options::OPT_fopenmp_cuda_teams_reduction_recs_num_EQ); in ConstructJob()
6183 if (Args.hasFlag(options::OPT_fopenmp_optimistic_collapse, in ConstructJob()
6184 options::OPT_fno_openmp_optimistic_collapse, in ConstructJob()
6190 if (Args.hasFlag(options::OPT_fopenmp_cuda_mode, in ConstructJob()
6191 options::OPT_fno_openmp_cuda_mode, /*Default=*/false)) in ConstructJob()
6195 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_target_debug_EQ); in ConstructJob()
6196 if (Args.hasFlag(options::OPT_fopenmp_target_debug, in ConstructJob()
6197 options::OPT_fno_openmp_target_debug, /*Default=*/false)) in ConstructJob()
6202 if (Args.hasFlag(options::OPT_fopenmp_assume_teams_oversubscription, in ConstructJob()
6203 options::OPT_fno_openmp_assume_teams_oversubscription, in ConstructJob()
6206 if (Args.hasFlag(options::OPT_fopenmp_assume_threads_oversubscription, in ConstructJob()
6207 options::OPT_fno_openmp_assume_threads_oversubscription, in ConstructJob()
6210 if (Args.hasArg(options::OPT_fopenmp_assume_no_thread_state)) in ConstructJob()
6212 if (Args.hasArg(options::OPT_fopenmp_assume_no_nested_parallelism)) in ConstructJob()
6214 if (Args.hasArg(options::OPT_fopenmp_offload_mandatory)) in ConstructJob()
6227 Args.AddLastArg(CmdArgs, options::OPT_fopenmp_simd, in ConstructJob()
6228 options::OPT_fno_openmp_simd); in ConstructJob()
6229 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_version_EQ); in ConstructJob()
6230 Args.addOptOutFlag(CmdArgs, options::OPT_fopenmp_extensions, in ConstructJob()
6231 options::OPT_fno_openmp_extensions); in ConstructJob()
6235 if (Args.hasFlag(options::OPT_offload_new_driver, in ConstructJob()
6236 options::OPT_no_offload_new_driver, false)) in ConstructJob()
6245 Args.getAllArgValues(options::OPT_fprofile_list_EQ)) { in ConstructJob()
6252 if (Arg *A = Args.getLastArg(options::OPT_fpatchable_function_entry_EQ)) { in ConstructJob()
6272 Args.AddLastArg(CmdArgs, options::OPT_fms_hotpatch); in ConstructJob()
6275 Args.AddLastArg(CmdArgs, options::OPT_pg); in ConstructJob()
6278 if (Arg *A = Args.getLastArg(options::OPT_mfentry)) { in ConstructJob()
6285 if (Arg *A = Args.getLastArg(options::OPT_mnop_mcount)) { in ConstructJob()
6292 if (Arg *A = Args.getLastArg(options::OPT_mrecord_mcount)) { in ConstructJob()
6300 if (Arg *A = Args.getLastArgNoClaim(options::OPT_p)) { in ConstructJob()
6307 if (Args.getLastArg(options::OPT_fapple_kext) || in ConstructJob()
6308 (Args.hasArg(options::OPT_mkernel) && types::isCXX(InputType))) in ConstructJob()
6311 Args.AddLastArg(CmdArgs, options::OPT_altivec_src_compat); in ConstructJob()
6312 Args.AddLastArg(CmdArgs, options::OPT_flax_vector_conversions_EQ); in ConstructJob()
6313 Args.AddLastArg(CmdArgs, options::OPT_fobjc_sender_dependent_dispatch); in ConstructJob()
6314 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info); in ConstructJob()
6315 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_parseable_fixits); in ConstructJob()
6316 Args.AddLastArg(CmdArgs, options::OPT_ftime_report); in ConstructJob()
6317 Args.AddLastArg(CmdArgs, options::OPT_ftime_report_EQ); in ConstructJob()
6318 Args.AddLastArg(CmdArgs, options::OPT_ftime_trace); in ConstructJob()
6319 Args.AddLastArg(CmdArgs, options::OPT_ftime_trace_granularity_EQ); in ConstructJob()
6320 Args.AddLastArg(CmdArgs, options::OPT_ftime_trace_EQ); in ConstructJob()
6321 Args.AddLastArg(CmdArgs, options::OPT_ftrapv); in ConstructJob()
6322 Args.AddLastArg(CmdArgs, options::OPT_malign_double); in ConstructJob()
6323 Args.AddLastArg(CmdArgs, options::OPT_fno_temp_file); in ConstructJob()
6325 if (Arg *A = Args.getLastArg(options::OPT_ftrapv_handler_EQ)) { in ConstructJob()
6330 Args.AddLastArg(CmdArgs, options::OPT_ftrap_function_EQ); in ConstructJob()
6334 if (Arg *A = Args.getLastArg(options::OPT_fwrapv, options::OPT_fno_wrapv)) { in ConstructJob()
6335 if (A->getOption().matches(options::OPT_fwrapv)) in ConstructJob()
6337 } else if (Arg *A = Args.getLastArg(options::OPT_fstrict_overflow, in ConstructJob()
6338 options::OPT_fno_strict_overflow)) { in ConstructJob()
6339 if (A->getOption().matches(options::OPT_fno_strict_overflow)) in ConstructJob()
6344 if (Arg *A = Args.getLastArg(options::OPT_freroll_loops, in ConstructJob()
6345 options::OPT_fno_reroll_loops)) in ConstructJob()
6346 if (A->getOption().matches(options::OPT_freroll_loops)) in ConstructJob()
6349 Args.AddLastArg(CmdArgs, options::OPT_ffinite_loops, in ConstructJob()
6350 options::OPT_fno_finite_loops); in ConstructJob()
6352 Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings); in ConstructJob()
6353 Args.AddLastArg(CmdArgs, options::OPT_funroll_loops, in ConstructJob()
6354 options::OPT_fno_unroll_loops); in ConstructJob()
6356 Args.AddLastArg(CmdArgs, options::OPT_fstrict_flex_arrays_EQ); in ConstructJob()
6358 Args.AddLastArg(CmdArgs, options::OPT_pthread); in ConstructJob()
6360 Args.addOptInFlag(CmdArgs, options::OPT_mspeculative_load_hardening, in ConstructJob()
6361 options::OPT_mno_speculative_load_hardening); in ConstructJob()
6365 if (Arg *A = Args.getLastArg(options::OPT_fno_ret_protector, in ConstructJob()
6366 options::OPT_fret_protector)) { in ConstructJob()
6367 if (A->getOption().matches(options::OPT_fno_ret_protector)) in ConstructJob()
6369 else if (A->getOption().matches(options::OPT_fret_protector)) in ConstructJob()
6381 !Args.hasArg(options::OPT_fno_stack_protector) && in ConstructJob()
6382 !Args.hasArg(options::OPT_pg)) { in ConstructJob()
6386 Args.getLastArg(options::OPT_fstack_protector_all, in ConstructJob()
6387 options::OPT_fstack_protector_strong, in ConstructJob()
6388 options::OPT_fstack_protector, in ConstructJob()
6389 options::OPT__param); // ssp-buffer-size in ConstructJob()
6396 if (Arg *A = Args.getLastArg(options::OPT_fno_fixup_gadgets, in ConstructJob()
6397 options::OPT_ffixup_gadgets)) { in ConstructJob()
6399 if (A->getOption().matches(options::OPT_fno_fixup_gadgets)) in ConstructJob()
6401 else if (A->getOption().matches(options::OPT_ffixup_gadgets)) in ConstructJob()
6406 if (Arg *A = Args.getLastArg(options::OPT_fno_ret_clean, in ConstructJob()
6407 options::OPT_fret_clean)) { in ConstructJob()
6409 if (A->getOption().matches(options::OPT_fno_ret_clean)) in ConstructJob()
6411 else if (A->getOption().matches(options::OPT_fret_clean)) in ConstructJob()
6418 Args.AddLastArg(CmdArgs, options::OPT_fswift_async_fp_EQ); in ConstructJob()
6420 Args.addOptInFlag(CmdArgs, options::OPT_mstackrealign, in ConstructJob()
6421 options::OPT_mno_stackrealign); in ConstructJob()
6423 if (Args.hasArg(options::OPT_mstack_alignment)) { in ConstructJob()
6424 StringRef alignment = Args.getLastArgValue(options::OPT_mstack_alignment); in ConstructJob()
6428 if (Args.hasArg(options::OPT_mstack_probe_size)) { in ConstructJob()
6429 StringRef Size = Args.getLastArgValue(options::OPT_mstack_probe_size); in ConstructJob()
6437 Args.addOptOutFlag(CmdArgs, options::OPT_mstack_arg_probe, in ConstructJob()
6438 options::OPT_mno_stack_arg_probe); in ConstructJob()
6440 if (Arg *A = Args.getLastArg(options::OPT_mrestrict_it, in ConstructJob()
6441 options::OPT_mno_restrict_it)) { in ConstructJob()
6442 if (A->getOption().matches(options::OPT_mrestrict_it)) { in ConstructJob()
6451 // Forward -cl options to -cc1 in ConstructJob()
6454 // Forward hlsl options to -cc1 in ConstructJob()
6458 if (Args.hasFlag(options::OPT_fhip_new_launch_api, in ConstructJob()
6459 options::OPT_fno_hip_new_launch_api, true)) in ConstructJob()
6461 if (Args.hasFlag(options::OPT_fgpu_allow_device_init, in ConstructJob()
6462 options::OPT_fno_gpu_allow_device_init, false)) in ConstructJob()
6464 Args.addOptInFlag(CmdArgs, options::OPT_fhip_kernel_arg_name, in ConstructJob()
6465 options::OPT_fno_hip_kernel_arg_name); in ConstructJob()
6471 if (Args.hasFlag(options::OPT_fgpu_defer_diag, in ConstructJob()
6472 options::OPT_fno_gpu_defer_diag, false)) in ConstructJob()
6474 if (Args.hasFlag(options::OPT_fgpu_exclude_wrong_side_overloads, in ConstructJob()
6475 options::OPT_fno_gpu_exclude_wrong_side_overloads, in ConstructJob()
6483 if (Args.hasArg(options::OPT_nogpulib)) in ConstructJob()
6486 if (Arg *A = Args.getLastArg(options::OPT_fcf_protection_EQ)) { in ConstructJob()
6496 if (Arg *A = Args.getLastArg(options::OPT_mfunction_return_EQ)) in ConstructJob()
6500 Args.AddLastArg(CmdArgs, options::OPT_mindirect_branch_cs_prefix); in ConstructJob()
6502 // Forward -f options with positive and negative forms; we translate these by in ConstructJob()
6503 // hand. Do not propagate PGO options to the GPU-side compilations as the in ConstructJob()
6508 options::OPT_fprofile_generate, options::OPT_fprofile_generate_EQ, in ConstructJob()
6509 options::OPT_fcs_profile_generate, in ConstructJob()
6510 options::OPT_fcs_profile_generate_EQ, options::OPT_fprofile_use, in ConstructJob()
6511 options::OPT_fprofile_use_EQ); in ConstructJob()
6514 << "SampleUse with PGO options"; in ConstructJob()
6522 Args.AddLastArg(CmdArgs, options::OPT_fprofile_remapping_file_EQ); in ConstructJob()
6524 if (Args.hasFlag(options::OPT_fpseudo_probe_for_profiling, in ConstructJob()
6525 options::OPT_fno_pseudo_probe_for_profiling, false)) { in ConstructJob()
6529 if (Args.hasFlag(options::OPT_funique_internal_linkage_names, in ConstructJob()
6530 options::OPT_fno_unique_internal_linkage_names, true)) in ConstructJob()
6536 Args.addOptOutFlag(CmdArgs, options::OPT_fassume_sane_operator_new, in ConstructJob()
6537 options::OPT_fno_assume_sane_operator_new); in ConstructJob()
6540 if (Args.hasFlag(options::OPT_fblocks, options::OPT_fno_blocks, in ConstructJob()
6542 (Args.hasArg(options::OPT_fgnu_runtime) && in ConstructJob()
6543 Args.hasArg(options::OPT_fobjc_nonfragile_abi) && in ConstructJob()
6544 !Args.hasArg(options::OPT_fno_blocks))) { in ConstructJob()
6547 if (!Args.hasArg(options::OPT_fgnu_runtime) && !TC.hasBlocksRuntime()) in ConstructJob()
6555 if (Args.hasFlag(options::OPT_fcoroutines_ts, options::OPT_fno_coroutines_ts, in ConstructJob()
6562 if (Args.hasFlag(options::OPT_fcoro_aligned_allocation, in ConstructJob()
6563 options::OPT_fno_coro_aligned_allocation, false) && in ConstructJob()
6567 Args.AddLastArg(CmdArgs, options::OPT_fdouble_square_bracket_attributes, in ConstructJob()
6568 options::OPT_fno_double_square_bracket_attributes); in ConstructJob()
6570 Args.addOptOutFlag(CmdArgs, options::OPT_faccess_control, in ConstructJob()
6571 options::OPT_fno_access_control); in ConstructJob()
6572 Args.addOptOutFlag(CmdArgs, options::OPT_felide_constructors, in ConstructJob()
6573 options::OPT_fno_elide_constructors); in ConstructJob()
6582 if (Args.hasFlag(options::OPT_fshort_enums, options::OPT_fno_short_enums, in ConstructJob()
6590 options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit, in ConstructJob()
6597 if (Args.hasFlag(options::OPT_fregister_global_dtors_with_atexit, in ConstructJob()
6598 options::OPT_fno_register_global_dtors_with_atexit, in ConstructJob()
6602 Args.addOptInFlag(CmdArgs, options::OPT_fuse_line_directives, in ConstructJob()
6603 options::OPT_fno_use_line_directives); in ConstructJob()
6606 if (Args.hasFlag(options::OPT_fminimize_whitespace, in ConstructJob()
6607 options::OPT_fno_minimize_whitespace, false)) { in ConstructJob()
6616 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions, in ConstructJob()
6622 options::OPT_fms_compatibility, options::OPT_fno_ms_compatibility, in ConstructJob()
6623 (IsWindowsMSVC && Args.hasFlag(options::OPT_fms_extensions, in ConstructJob()
6624 options::OPT_fno_ms_extensions, true))); in ConstructJob()
6629 Args.hasArg(options::OPT_fms_runtime_lib_EQ)) in ConstructJob()
6634 if (Arg *A = Args.getLastArg(options::OPT_fgnuc_version_EQ)) { in ConstructJob()
6663 if (const Arg *StdArg = Args.getLastArg(options::OPT__SLASH_std)) { in ConstructJob()
6677 if (const Arg *StdArg = Args.getLastArg(options::OPT__SLASH_std)) { in ConstructJob()
6700 Args.addOptInFlag(CmdArgs, options::OPT_fborland_extensions, in ConstructJob()
6701 options::OPT_fno_borland_extensions); in ConstructJob()
6704 if (Args.hasFlag(options::OPT_fdeclspec, options::OPT_fno_declspec, in ConstructJob()
6707 else if (Args.hasArg(options::OPT_fno_declspec)) in ConstructJob()
6712 if (!Args.hasFlag(options::OPT_fthreadsafe_statics, in ConstructJob()
6713 options::OPT_fno_threadsafe_statics, in ConstructJob()
6722 if (Args.hasFlag(options::OPT_fdelayed_template_parsing, in ConstructJob()
6723 options::OPT_fno_delayed_template_parsing, IsWindowsMSVC)) in ConstructJob()
6728 Args.AddLastArg(CmdArgs, options::OPT_fgnu_keywords, in ConstructJob()
6729 options::OPT_fno_gnu_keywords); in ConstructJob()
6731 Args.addOptInFlag(CmdArgs, options::OPT_fgnu89_inline, in ConstructJob()
6732 options::OPT_fno_gnu89_inline); in ConstructJob()
6734 const Arg *InlineArg = Args.getLastArg(options::OPT_finline_functions, in ConstructJob()
6735 options::OPT_finline_hint_functions, in ConstructJob()
6736 options::OPT_fno_inline_functions); in ConstructJob()
6737 if (Arg *A = Args.getLastArg(options::OPT_finline, options::OPT_fno_inline)) { in ConstructJob()
6738 if (A->getOption().matches(options::OPT_fno_inline)) in ConstructJob()
6744 Args.AddLastArg(CmdArgs, options::OPT_finline_max_stacksize_EQ); in ConstructJob()
6749 if (Args.hasFlag(options::OPT_fpch_validate_input_files_content, in ConstructJob()
6750 options::OPT_fno_pch_validate_input_files_content, false)) in ConstructJob()
6752 if (Args.hasFlag(options::OPT_fpch_instantiate_templates, in ConstructJob()
6753 options::OPT_fno_pch_instantiate_templates, false)) in ConstructJob()
6755 if (Args.hasFlag(options::OPT_fpch_codegen, options::OPT_fno_pch_codegen, in ConstructJob()
6758 if (Args.hasFlag(options::OPT_fpch_debuginfo, options::OPT_fno_pch_debuginfo, in ConstructJob()
6767 Args.hasFlag(options::OPT_fobjc_encode_cxx_class_template_spec, in ConstructJob()
6768 options::OPT_fno_objc_encode_cxx_class_template_spec, in ConstructJob()
6772 if (Args.hasFlag(options::OPT_fapplication_extension, in ConstructJob()
6773 options::OPT_fno_application_extension, false)) in ConstructJob()
6783 options::OPT_fsjlj_exceptions, options::OPT_fseh_exceptions, in ConstructJob()
6784 options::OPT_fdwarf_exceptions, options::OPT_fwasm_exceptions); in ConstructJob()
6787 if (Opt.matches(options::OPT_fsjlj_exceptions)) in ConstructJob()
6789 if (Opt.matches(options::OPT_fseh_exceptions)) in ConstructJob()
6791 if (Opt.matches(options::OPT_fdwarf_exceptions)) in ConstructJob()
6793 if (Opt.matches(options::OPT_fwasm_exceptions)) in ConstructJob()
6812 Args.addOptOutFlag(CmdArgs, options::OPT_fassume_sane_operator_new, in ConstructJob()
6813 options::OPT_fno_assume_sane_operator_new); in ConstructJob()
6818 Args.addOptInFlag(CmdArgs, options::OPT_frelaxed_template_template_args, in ConstructJob()
6819 options::OPT_fno_relaxed_template_template_args); in ConstructJob()
6823 Args.addOptInFlag(CmdArgs, options::OPT_fsized_deallocation, in ConstructJob()
6824 options::OPT_fno_sized_deallocation); in ConstructJob()
6828 if (Arg *A = Args.getLastArg(options::OPT_faligned_allocation, in ConstructJob()
6829 options::OPT_fno_aligned_allocation, in ConstructJob()
6830 options::OPT_faligned_new_EQ)) { in ConstructJob()
6831 if (A->getOption().matches(options::OPT_fno_aligned_allocation)) in ConstructJob()
6839 if (Arg *A = Args.getLastArg(options::OPT_fnew_alignment_EQ, in ConstructJob()
6840 options::OPT_faligned_new_EQ)) in ConstructJob()
6846 if (!Args.hasFlag(options::OPT_fconstant_cfstrings, in ConstructJob()
6847 options::OPT_fno_constant_cfstrings, true) || in ConstructJob()
6848 !Args.hasFlag(options::OPT_mconstant_cfstrings, in ConstructJob()
6849 options::OPT_mno_constant_cfstrings, true)) in ConstructJob()
6852 Args.addOptInFlag(CmdArgs, options::OPT_fpascal_strings, in ConstructJob()
6853 options::OPT_fno_pascal_strings); in ConstructJob()
6857 if (Arg *A = Args.getLastArg(options::OPT_fpack_struct_EQ)) { in ConstructJob()
6861 } else if (Args.hasFlag(options::OPT_fpack_struct, in ConstructJob()
6862 options::OPT_fno_pack_struct, false)) { in ConstructJob()
6867 bool SkipMaxTypeAlign = Args.hasArg(options::OPT_fno_max_type_align); in ConstructJob()
6868 if (Arg *A = Args.getLastArg(options::OPT_fmax_type_align_EQ)) { in ConstructJob()
6881 if (!Args.hasFlag(options::OPT_Qy, options::OPT_Qn, true)) in ConstructJob()
6885 Args.addOptInFlag(CmdArgs, options::OPT_fcommon, options::OPT_fno_common); in ConstructJob()
6889 if (!Args.hasFlag(options::OPT_fsigned_bitfields, in ConstructJob()
6890 options::OPT_funsigned_bitfields, true)) in ConstructJob()
6892 << Args.getLastArg(options::OPT_funsigned_bitfields)->getAsString(Args); in ConstructJob()
6895 if (!Args.hasFlag(options::OPT_ffor_scope, options::OPT_fno_for_scope, true)) in ConstructJob()
6897 << Args.getLastArg(options::OPT_fno_for_scope)->getAsString(Args); in ConstructJob()
6900 if (Arg *inputCharset = Args.getLastArg(options::OPT_finput_charset_EQ)) { in ConstructJob()
6908 if (Arg *execCharset = Args.getLastArg(options::OPT_fexec_charset_EQ)) { in ConstructJob()
6917 Args.addOptInFlag(CmdArgs, options::OPT_fasm_blocks, in ConstructJob()
6918 options::OPT_fno_asm_blocks); in ConstructJob()
6920 Args.addOptOutFlag(CmdArgs, options::OPT_fgnu_inline_asm, in ConstructJob()
6921 options::OPT_fno_gnu_inline_asm); in ConstructJob()
6928 EnableVec ? options::OPT_O_Group : options::OPT_fvectorize; in ConstructJob()
6929 if (Args.hasFlag(options::OPT_fvectorize, VectorizeAliasOption, in ConstructJob()
6930 options::OPT_fno_vectorize, EnableVec)) in ConstructJob()
6936 EnableSLPVec ? options::OPT_O_Group : options::OPT_fslp_vectorize; in ConstructJob()
6937 if (Args.hasFlag(options::OPT_fslp_vectorize, SLPVectAliasOption, in ConstructJob()
6938 options::OPT_fno_slp_vectorize, EnableSLPVec)) in ConstructJob()
6943 Args.AddLastArg(CmdArgs, options::OPT_fshow_overloads_EQ); in ConstructJob()
6945 options::OPT_fsanitize_undefined_strip_path_components_EQ); in ConstructJob()
6949 if (Arg *A = Args.getLastArg(options::OPT_fdollars_in_identifiers, in ConstructJob()
6950 options::OPT_fno_dollars_in_identifiers)) { in ConstructJob()
6951 if (A->getOption().matches(options::OPT_fdollars_in_identifiers)) in ConstructJob()
6957 Args.addOptInFlag(CmdArgs, options::OPT_fapple_pragma_pack, in ConstructJob()
6958 options::OPT_fno_apple_pragma_pack); in ConstructJob()
6960 if (Args.hasFlag(options::OPT_fxl_pragma_pack, in ConstructJob()
6961 options::OPT_fno_xl_pragma_pack, RawTriple.isOSAIX())) in ConstructJob()
6968 bool RewriteImports = Args.hasFlag(options::OPT_frewrite_imports, in ConstructJob()
6969 options::OPT_fno_rewrite_imports, false); in ConstructJob()
6985 Args.addOptInFlag(CmdArgs, options::OPT_fdirectives_only, in ConstructJob()
6986 options::OPT_fno_directives_only); in ConstructJob()
6992 if (Args.hasFlag(options::OPT_frewrite_includes, in ConstructJob()
6993 options::OPT_fno_rewrite_includes, false) || in ConstructJob()
6998 if (Arg *A = Args.getLastArg(options::OPT_traditional, in ConstructJob()
6999 options::OPT_traditional_cpp)) { in ConstructJob()
7006 Args.AddLastArg(CmdArgs, options::OPT_dM); in ConstructJob()
7007 Args.AddLastArg(CmdArgs, options::OPT_dD); in ConstructJob()
7008 Args.AddLastArg(CmdArgs, options::OPT_dI); in ConstructJob()
7010 Args.AddLastArg(CmdArgs, options::OPT_fmax_tokens_EQ); in ConstructJob()
7013 if (Arg *A = Args.getLastArg(options::OPT__serialize_diags)) { in ConstructJob()
7018 if (Args.hasArg(options::OPT_fretain_comments_from_system_headers)) in ConstructJob()
7022 Args.AddAllArgs(CmdArgs, options::OPT_fcomment_block_commands); in ConstructJob()
7024 Args.AddAllArgs(CmdArgs, options::OPT_fparse_all_comments); in ConstructJob()
7027 for (const Arg *A : Args.filtered(options::OPT_fplugin_EQ)) { in ConstructJob()
7041 for (const Arg *A : Args.filtered(options::OPT_fplugin_arg)) { in ConstructJob()
7063 for (const Arg *A : Args.filtered(options::OPT_fpass_plugin_EQ)) { in ConstructJob()
7076 for (auto Arg : Args.filtered(options::OPT_Xclang)) { in ConstructJob()
7087 for (const Arg *A : Args.filtered(options::OPT_mllvm)) { in ConstructJob()
7114 Args.AddAllArgs(CmdArgs, options::OPT_undef); in ConstructJob()
7121 // -grecord-gcc-switches options is set on. in ConstructJob()
7124 Args.hasFlag(options::OPT_grecord_command_line, in ConstructJob()
7125 options::OPT_gno_record_command_line, false); in ConstructJob()
7127 Args.hasFlag(options::OPT_frecord_command_line, in ConstructJob()
7128 options::OPT_fno_record_command_line, false); in ConstructJob()
7131 << Args.getLastArg(options::OPT_frecord_command_line)->getAsString(Args) in ConstructJob()
7176 if (Args.hasFlag(options::OPT_fcuda_short_ptr, in ConstructJob()
7177 options::OPT_fno_cuda_short_ptr, false)) in ConstructJob()
7195 Args.AddLastArg(CmdArgs, options::OPT_fgpu_default_stream_EQ); in ConstructJob()
7200 Args.getLastArgValue(options::OPT_fgpu_inline_threshold_EQ); in ConstructJob()
7224 Args.addOptInFlag(CmdArgs, options::OPT_munsafe_fp_atomics, in ConstructJob()
7225 options::OPT_mno_unsafe_fp_atomics); in ConstructJob()
7241 Args.hasFlag(options::OPT_fvirtual_function_elimination, in ConstructJob()
7242 options::OPT_fno_virtual_function_elimination, false); in ConstructJob()
7256 options::OPT_fwhole_program_vtables, in ConstructJob()
7257 options::OPT_fno_whole_program_vtables, VirtualFunctionElimination); in ConstructJob()
7268 // Check if we passed LTO options but they were suppressed because this is a in ConstructJob()
7269 // device offloading action, or we passed device offload LTO options which in ConstructJob()
7282 Args.hasFlag(options::OPT_fsplit_lto_unit, in ConstructJob()
7283 options::OPT_fno_split_lto_unit, DefaultsSplitLTOUnit); in ConstructJob()
7290 if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel, in ConstructJob()
7291 options::OPT_fno_global_isel)) { in ConstructJob()
7293 if (A->getOption().matches(options::OPT_fglobal_isel)) { in ConstructJob()
7302 Arg *A = Args.getLastArg(options::OPT_O_Group); in ConstructJob()
7304 if (!A || A->getOption().matches(options::OPT_O0)) in ConstructJob()
7321 if (Args.hasArg(options::OPT_forder_file_instrumentation)) { in ConstructJob()
7332 if (Arg *A = Args.getLastArg(options::OPT_fforce_enable_int128, in ConstructJob()
7333 options::OPT_fno_force_enable_int128)) { in ConstructJob()
7334 if (A->getOption().matches(options::OPT_fforce_enable_int128)) in ConstructJob()
7338 Args.addOptInFlag(CmdArgs, options::OPT_fkeep_static_consts, in ConstructJob()
7339 options::OPT_fno_keep_static_consts); in ConstructJob()
7340 Args.addOptInFlag(CmdArgs, options::OPT_fcomplete_member_pointers, in ConstructJob()
7341 options::OPT_fno_complete_member_pointers); in ConstructJob()
7342 Args.addOptOutFlag(CmdArgs, options::OPT_fcxx_static_destructors, in ConstructJob()
7343 options::OPT_fno_cxx_static_destructors); in ConstructJob()
7347 if (Arg *A = Args.getLastArg(options::OPT_moutline_atomics, in ConstructJob()
7348 options::OPT_mno_outline_atomics)) { in ConstructJob()
7354 if (A->getOption().matches(options::OPT_moutline_atomics)) { in ConstructJob()
7369 (Args.hasArg(options::OPT_mno_fmv) || in ConstructJob()
7376 if (Args.hasFlag(options::OPT_faddrsig, options::OPT_fno_addrsig, in ConstructJob()
7390 if (Arg *A = Args.getLastArg(options::OPT_fsymbol_partition_EQ)) { in ConstructJob()
7450 Args.hasFlag(options::OPT__SLASH_showFilenames, in ConstructJob()
7451 options::OPT__SLASH_showFilenames_, false)) { in ConstructJob()
7455 if (Arg *A = Args.getLastArg(options::OPT_pg)) in ConstructJob()
7457 !Args.hasArg(options::OPT_mfentry)) in ConstructJob()
7465 Args.ClaimAllArgs(options::OPT_fpch_preprocess); in ConstructJob()
7469 Args.ClaimAllArgs(options::OPT_clang_ignored_f_Group); in ConstructJob()
7470 Args.ClaimAllArgs(options::OPT_clang_ignored_m_Group); in ConstructJob()
7473 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
7484 /// Add options related to the Objective-C runtime/ABI.
7493 args.getLastArg(options::OPT_fnext_runtime, options::OPT_fgnu_runtime, in AddObjCRuntimeArgs()
7494 options::OPT_fobjc_runtime_EQ); in AddObjCRuntimeArgs()
7497 // options about fragility. in AddObjCRuntimeArgs()
7499 runtimeArg->getOption().matches(options::OPT_fobjc_runtime_EQ)) { in AddObjCRuntimeArgs()
7526 if (Arg *abiArg = args.getLastArg(options::OPT_fobjc_abi_version_EQ)) { in AddObjCRuntimeArgs()
7542 if (args.hasFlag(options::OPT_fobjc_nonfragile_abi, in AddObjCRuntimeArgs()
7543 options::OPT_fno_objc_nonfragile_abi, in AddObjCRuntimeArgs()
7553 args.getLastArg(options::OPT_fobjc_nonfragile_abi_version_EQ)) { in AddObjCRuntimeArgs()
7591 } else if (runtimeArg->getOption().matches(options::OPT_fnext_runtime)) { in AddObjCRuntimeArgs()
7603 assert(runtimeArg->getOption().matches(options::OPT_fgnu_runtime)); in AddObjCRuntimeArgs()
7645 Args.getAllArgValues(options::OPT__SLASH_EH); in parseClangCLEHFlags()
7672 Args.hasFlag(options::OPT__SLASH_GX, options::OPT__SLASH_GX_, in parseClangCLEHFlags()
7678 if (Args.hasArg(options::OPT__SLASH_kernel)) { in parseClangCLEHFlags()
7696 Args.getLastArg(options::OPT__SLASH_showIncludes, in AddClangCLArgs()
7697 options::OPT__SLASH_showIncludes_user)) { in AddClangCLArgs()
7699 if (ShowIncludes->getOption().matches(options::OPT__SLASH_showIncludes)) in AddClangCLArgs()
7704 if (Args.hasFlag(options::OPT__SLASH_GR_, options::OPT__SLASH_GR, in AddClangCLArgs()
7710 if (!isNVPTX && Args.hasFlag(options::OPT__SLASH_GS, options::OPT__SLASH_GS_, in AddClangCLArgs()
7717 if (Arg *DebugInfoArg = Args.getLastArg(options::OPT__SLASH_Z7, in AddClangCLArgs()
7718 options::OPT_gline_tables_only)) { in AddClangCLArgs()
7720 if (DebugInfoArg->getOption().matches(options::OPT__SLASH_Z7)) in AddClangCLArgs()
7731 if (Args.hasFlag(options::OPT__SLASH_JMC, options::OPT__SLASH_JMC_, in AddClangCLArgs()
7750 if (Args.hasArg(options::OPT__SLASH_EP)) { in AddClangCLArgs()
7757 VolatileOptionID = options::OPT__SLASH_volatile_ms; in AddClangCLArgs()
7759 VolatileOptionID = options::OPT__SLASH_volatile_iso; in AddClangCLArgs()
7761 if (Arg *A = Args.getLastArg(options::OPT__SLASH_volatile_Group)) in AddClangCLArgs()
7764 if (VolatileOptionID == options::OPT__SLASH_volatile_ms) in AddClangCLArgs()
7767 if (Args.hasFlag(options::OPT__SLASH_Zc_dllexportInlines_, in AddClangCLArgs()
7768 options::OPT__SLASH_Zc_dllexportInlines, in AddClangCLArgs()
7773 if (Args.hasFlag(options::OPT__SLASH_Zc_wchar_t_, in AddClangCLArgs()
7774 options::OPT__SLASH_Zc_wchar_t, false)) { in AddClangCLArgs()
7778 if (Args.hasArg(options::OPT__SLASH_kernel)) { in AddClangCLArgs()
7781 Args.getAllArgValues(options::OPT__SLASH_arch); in AddClangCLArgs()
7794 if (Args.hasFlag(options::OPT__SLASH_GR, options::OPT__SLASH_GR_, false)) in AddClangCLArgs()
7799 Arg *MostGeneralArg = Args.getLastArg(options::OPT__SLASH_vmg); in AddClangCLArgs()
7800 Arg *BestCaseArg = Args.getLastArg(options::OPT__SLASH_vmb); in AddClangCLArgs()
7806 Arg *SingleArg = Args.getLastArg(options::OPT__SLASH_vms); in AddClangCLArgs()
7807 Arg *MultipleArg = Args.getLastArg(options::OPT__SLASH_vmm); in AddClangCLArgs()
7808 Arg *VirtualArg = Args.getLastArg(options::OPT__SLASH_vmv); in AddClangCLArgs()
7825 // Parse the default calling convention options. in AddClangCLArgs()
7827 Args.getLastArg(options::OPT__SLASH_Gd, options::OPT__SLASH_Gr, in AddClangCLArgs()
7828 options::OPT__SLASH_Gz, options::OPT__SLASH_Gv, in AddClangCLArgs()
7829 options::OPT__SLASH_Gregcall)) { in AddClangCLArgs()
7835 case options::OPT__SLASH_Gd: in AddClangCLArgs()
7838 case options::OPT__SLASH_Gr: in AddClangCLArgs()
7842 case options::OPT__SLASH_Gz: in AddClangCLArgs()
7846 case options::OPT__SLASH_Gv: in AddClangCLArgs()
7850 case options::OPT__SLASH_Gregcall: in AddClangCLArgs()
7861 Args.AddLastArg(CmdArgs, options::OPT_vtordisp_mode_EQ); in AddClangCLArgs()
7863 if (!Args.hasArg(options::OPT_fdiagnostics_format_EQ)) { in AddClangCLArgs()
7868 if (Args.hasArg(options::OPT__SLASH_kernel)) in AddClangCLArgs()
7871 for (const Arg *A : Args.filtered(options::OPT__SLASH_guard)) { in AddClangCLArgs()
7873 // The only valid options are "cf", "cf,nochecks", "cf-", "ehcont" and in AddClangCLArgs()
7913 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) { in getDependencyFileName()
7940 if (Arg *A = Args.getLastArg(options::OPT_masm_EQ)) { in AddX86TargetArgs()
7975 Args.ClaimAllArgs(options::OPT_w); in ConstructJob()
7977 Args.ClaimAllArgs(options::OPT_emit_llvm); in ConstructJob()
8013 (void)Args.hasArg(options::OPT_force__cpusubtype__ALL); in ConstructJob()
8015 // Pass along any -I options so we get proper .include search paths. in ConstructJob()
8016 Args.AddAllArgs(CmdArgs, options::OPT_I_Group); in ConstructJob()
8031 Args.ClaimAllArgs(options::OPT_g_Group); in ConstructJob()
8032 if (Arg *A = Args.getLastArg(options::OPT_g_Group)) in ConstructJob()
8033 WantDebug = !A->getOption().matches(options::OPT_g0) && in ConstructJob()
8034 !A->getOption().matches(options::OPT_ggdb0); in ConstructJob()
8059 // And pass along -I options in ConstructJob()
8060 Args.AddAllArgs(CmdArgs, options::OPT_I); in ConstructJob()
8127 if (Args.hasFlag(options::OPT_mdefault_build_attributes, in ConstructJob()
8128 options::OPT_mno_default_build_attributes, true)) { in ConstructJob()
8137 if (Args.hasArg(options::OPT_mmark_bti_property)) { in ConstructJob()
8154 Args.ClaimAllArgs(options::OPT_W_Group); in ConstructJob()
8159 Args.AddAllArgs(CmdArgs, options::OPT_mllvm); in ConstructJob()
8427 : TCArgs.getLastArgValue(options::OPT_march_EQ); in ConstructJob()
8484 if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) { in ConstructJob()
8486 if (A->getOption().matches(options::OPT_O4) || in ConstructJob()
8487 A->getOption().matches(options::OPT_Ofast)) in ConstructJob()
8489 else if (A->getOption().matches(options::OPT_O)) { in ConstructJob()
8495 } else if (A->getOption().matches(options::OPT_O0)) in ConstructJob()
8504 if (Args.hasArg(options::OPT_v)) in ConstructJob()
8507 if (const Arg *A = Args.getLastArg(options::OPT_g_Group)) { in ConstructJob()
8508 if (!A->getOption().matches(options::OPT_g0)) in ConstructJob()
8512 for (const auto &A : Args.getAllArgValues(options::OPT_Xcuda_ptxas)) in ConstructJob()
8516 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_EQ)) in ConstructJob()
8519 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_missed_EQ)) in ConstructJob()
8522 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_analysis_EQ)) in ConstructJob()
8525 if (Args.getLastArg(options::OPT_save_temps_EQ)) in ConstructJob()
8533 for (Arg *A : Args.filtered(options::OPT_Xoffload_linker)) { in ConstructJob()
8544 Args.ClaimAllArgs(options::OPT_Xoffload_linker); in ConstructJob()
8547 if (Args.hasFlag(options::OPT_fopenmp_target_jit, in ConstructJob()
8548 options::OPT_fno_openmp_target_jit, false)) in ConstructJob()
8552 for (Arg *A : Args.filtered(options::OPT_mllvm)) { in ConstructJob()