Lines Matching full:options

40 #include "clang/Driver/Options.h"
48 #include "llvm/Frontend/Debug/Options.h"
73 if (Arg *A = Args.getLastArg(clang::driver::options::OPT_C, options::OPT_CC,
74 options::OPT_fminimize_whitespace,
75 options::OPT_fno_minimize_whitespace,
76 options::OPT_fkeep_system_includes,
77 options::OPT_fno_keep_system_includes)) {
78 if (!Args.hasArg(options::OPT_E) && !Args.hasArg(options::OPT__SLASH_P) &&
79 !Args.hasArg(options::OPT__SLASH_EP) && !D.CCCIsCPP()) {
89 if (Args.hasArg(options::OPT_static))
91 Args.getLastArg(options::OPT_dynamic, options::OPT_mdynamic_no_pic))
185 Arg *A = Args.getLastArg(options::OPT_mrecip, options::OPT_mrecip_EQ);
289 Arg *A = Args.getLastArg(options::OPT_mprefer_vector_width_EQ);
336 Args.ClaimAllArgs(options::OPT_fexceptions);
337 Args.ClaimAllArgs(options::OPT_fno_exceptions);
338 Args.ClaimAllArgs(options::OPT_fobjc_exceptions);
339 Args.ClaimAllArgs(options::OPT_fno_objc_exceptions);
340 Args.ClaimAllArgs(options::OPT_fcxx_exceptions);
341 Args.ClaimAllArgs(options::OPT_fno_cxx_exceptions);
342 Args.ClaimAllArgs(options::OPT_fasync_exceptions);
343 Args.ClaimAllArgs(options::OPT_fno_async_exceptions);
348 bool EH = Args.hasFlag(options::OPT_fexceptions, options::OPT_fno_exceptions,
353 bool EHa = Args.hasFlag(options::OPT_fasync_exceptions,
354 options::OPT_fno_async_exceptions, false);
364 Args.hasFlag(options::OPT_fobjc_exceptions,
365 options::OPT_fno_objc_exceptions, true)) {
376 options::OPT_fcxx_exceptions, options::OPT_fno_cxx_exceptions,
377 options::OPT_fexceptions, options::OPT_fno_exceptions);
380 ExceptionArg->getOption().matches(options::OPT_fcxx_exceptions) ||
381 ExceptionArg->getOption().matches(options::OPT_fexceptions);
393 Args.AddLastArg(CmdArgs, options::OPT_fignore_exceptions);
395 Args.addOptInFlag(CmdArgs, options::OPT_fassume_nothrow_exception_dtor,
396 options::OPT_fno_assume_nothrow_exception_dtor);
415 return Args.hasFlag(options::OPT_fautolink, options::OPT_fno_autolink,
423 if (Arg *A = Args.getLastArg(options::OPT_ffile_compilation_dir_EQ,
424 options::OPT_fdebug_compilation_dir_EQ)) {
425 if (A->getOption().matches(options::OPT_ffile_compilation_dir_EQ))
442 for (auto *Arg : Args.filtered(options::OPT_Xclang))
446 if (Args.hasArg(options::OPT_object_file_name_EQ))
481 for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ,
482 options::OPT_fdebug_prefix_map_EQ)) {
495 for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ,
496 options::OPT_fmacro_prefix_map_EQ)) {
510 for (const Arg *A : Args.filtered(options::OPT_ffile_prefix_map_EQ,
511 options::OPT_fcoverage_prefix_map_EQ)) {
526 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
527 if (A->getOption().matches(options::OPT_O4) ||
528 A->getOption().matches(options::OPT_Ofast))
531 if (A->getOption().matches(options::OPT_O0))
534 assert(A->getOption().matches(options::OPT_O) && "Must have a -O flag");
560 if (Args.hasArg(options::OPT_verify_pch) && Input.getType() == types::TY_PCH)
564 if (Args.hasArg(options::OPT_rewrite_objc))
591 auto *PGOGenerateArg = Args.getLastArg(options::OPT_fprofile_generate,
592 options::OPT_fprofile_generate_EQ,
593 options::OPT_fno_profile_generate);
595 PGOGenerateArg->getOption().matches(options::OPT_fno_profile_generate))
601 options::OPT_fprofile_instr_generate,
602 options::OPT_fprofile_instr_generate_EQ,
603 options::OPT_fno_profile_instr_generate);
606 options::OPT_fno_profile_instr_generate))
637 options::OPT_fprofile_instr_generate_EQ))
643 Args.hasFlag(options::OPT_frtlib_defaultlib,
644 options::OPT_fno_rtlib_defaultlib, true)) {
664 Args.hasFlag(options::OPT_frtlib_defaultlib,
665 options::OPT_fno_rtlib_defaultlib, true)) {
671 PGOGenerateArg ? options::OPT_fprofile_generate_EQ
672 : options::OPT_fcs_profile_generate_EQ)) {
681 if (ProfileUseArg->getOption().matches(options::OPT_fprofile_instr_use_EQ))
685 options::OPT_fprofile_use_EQ) ||
687 options::OPT_fprofile_instr_use))) {
697 bool EmitCovNotes = Args.hasFlag(options::OPT_ftest_coverage,
698 options::OPT_fno_test_coverage, false) ||
699 Args.hasArg(options::OPT_coverage);
702 if (Args.hasFlag(options::OPT_fcoverage_mapping,
703 options::OPT_fno_coverage_mapping, false)) {
712 if (Args.hasFlag(options::OPT_fmcdc_coverage, options::OPT_fno_mcdc_coverage,
714 if (!Args.hasFlag(options::OPT_fcoverage_mapping,
715 options::OPT_fno_coverage_mapping, false))
723 if (Arg *A = Args.getLastArg(options::OPT_ffile_compilation_dir_EQ,
724 options::OPT_fcoverage_compilation_dir_EQ)) {
725 if (A->getOption().matches(options::OPT_ffile_compilation_dir_EQ))
735 if (Args.hasArg(options::OPT_fprofile_exclude_files_EQ)) {
736 auto *Arg = Args.getLastArg(options::OPT_fprofile_exclude_files_EQ);
737 if (!Args.hasArg(options::OPT_coverage))
747 if (Args.hasArg(options::OPT_fprofile_filter_files_EQ)) {
748 auto *Arg = Args.getLastArg(options::OPT_fprofile_filter_files_EQ);
749 if (!Args.hasArg(options::OPT_coverage))
758 if (const auto *A = Args.getLastArg(options::OPT_fprofile_update_EQ)) {
769 if (const auto *A = Args.getLastArg(options::OPT_fprofile_function_groups)) {
775 Args.getLastArg(options::OPT_fprofile_selected_function_group)) {
793 if (Args.hasArg(options::OPT_fprofile_arcs) ||
794 Args.hasArg(options::OPT_coverage))
795 FProfileDir = Args.getLastArg(options::OPT_fprofile_dir);
799 (void)(Args.hasArg(options::OPT_c) || Args.hasArg(options::OPT_S));
806 if (Arg *DumpDir = Args.getLastArgNoClaim(options::OPT_dumpdir)) {
812 C.getArgs().getLastArg(options::OPT__SLASH_Fo)) {
814 } else if (Arg *FinalOutput = C.getArgs().getLastArg(options::OPT_o)) {
881 const Arg *A = Args.getLastArg(options::OPT_gz_EQ);
980 Args.AddLastArg(CmdArgs, options::OPT_C);
981 Args.AddLastArg(CmdArgs, options::OPT_CC);
984 Arg *ArgM = Args.getLastArg(options::OPT_MM);
986 ArgM = Args.getLastArg(options::OPT_M);
987 Arg *ArgMD = Args.getLastArg(options::OPT_MMD);
989 ArgMD = Args.getLastArg(options::OPT_MD);
1000 if (Arg *MF = Args.getLastArg(options::OPT_MF)) {
1015 for (const Arg *A : Args.filtered(options::OPT_MT, options::OPT_MQ)) {
1018 if (A->getOption().matches(options::OPT_MT)) {
1034 Arg *OutputOpt = Args.getLastArg(options::OPT_o, options::OPT__SLASH_Fo);
1052 if (ArgM->getOption().matches(options::OPT_M) ||
1053 ArgM->getOption().matches(options::OPT_MD))
1056 !Args.hasArg(options::OPT_fno_module_file_deps)) ||
1057 Args.hasArg(options::OPT_fmodule_file_deps))
1061 if (Args.hasArg(options::OPT_MG)) {
1062 if (!ArgM || ArgM->getOption().matches(options::OPT_MD) ||
1063 ArgM->getOption().matches(options::OPT_MMD))
1068 Args.AddLastArg(CmdArgs, options::OPT_MP);
1069 Args.AddLastArg(CmdArgs, options::OPT_MV);
1083 !Args.hasArg(options::OPT_nostdinc) &&
1084 !Args.hasArg(options::OPT_nogpuinc) &&
1087 if (!Args.hasArg(options::OPT_nobuiltininc)) {
1101 // Add -i* options, and automatically translate to
1108 const Arg *YcArg = Args.getLastArg(options::OPT__SLASH_Yc);
1109 const Arg *YuArg = Args.getLastArg(options::OPT__SLASH_Yu);
1115 if (Args.hasFlag(options::OPT_fpch_instantiate_templates,
1116 options::OPT_fno_pch_instantiate_templates, true))
1140 for (const Arg *A : Args.filtered(options::OPT_clang_i_Group)) {
1141 if (A->getOption().matches(options::OPT_include) &&
1174 } else if (A->getOption().matches(options::OPT_isystem_after)) {
1181 } else if (A->getOption().matches(options::OPT_stdlibxx_isystem)) {
1184 } else if (A->getOption().matches(options::OPT_ibuiltininc)) {
1195 {options::OPT_D, options::OPT_U, options::OPT_I_Group,
1196 options::OPT_F, options::OPT_index_header_map,
1197 options::OPT_embed_dir_EQ});
1202 // souls abuse -Wp, to pass preprocessor options in gcc syntax. To
1204 // those options. :(
1205 Args.AddAllArgValues(CmdArgs, options::OPT_Wp_COMMA,
1206 options::OPT_Xpreprocessor);
1209 if (Arg *A = Args.getLastArg(options::OPT_I_))
1216 if (!Args.hasArg(options::OPT_isysroot)) {
1243 bool HasStdlibxxIsystem = Args.hasArg(options::OPT_stdlibxx_isystem);
1256 if (!Args.hasArg(options::OPT_nostdinc) &&
1257 !Args.hasArg(options::OPT_nogpuinc) &&
1258 !Args.hasArg(options::OPT_nobuiltininc)) {
1295 Args.AddLastArg(CmdArgs, options::OPT_ffile_reproducible,
1296 options::OPT_fno_file_reproducible);
1303 Args.addOptInFlag(CmdArgs, options::OPT_fdefine_target_os_macros,
1304 options::OPT_fno_define_target_os_macros);
1349 return Args.getAllArgValues(options::OPT_arch).size() > 1;
1359 Args.getLastArg(options::OPT_foptimization_record_file_EQ);
1373 if (const Arg *A = Args.getLastArg(options::OPT_fsave_optimization_record_EQ))
1378 const Arg *A = Args.getLastArg(options::OPT_foptimization_record_file_EQ);
1384 Args.getAllArgValues(options::OPT_arch).size() > 1;
1388 if (Args.hasArg(options::OPT_c) || Args.hasArg(options::OPT_S)) {
1389 if (Arg *FinalOutput = Args.getLastArg(options::OPT_o))
1440 Args.getLastArg(options::OPT_foptimization_record_passes_EQ)) {
1452 if (!Args.hasFlag(options::OPT_faapcs_bitfield_width,
1453 options::OPT_fno_aapcs_bitfield_width, true))
1456 if (Args.getLastArg(options::OPT_ForceAAPCSBitfieldLoad))
1467 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) {
1489 // Each combination of options here forms a signing schema, and in most cases
1491 // options represent the default signing schema.
1493 if (!DriverArgs.hasArg(options::OPT_fptrauth_intrinsics,
1494 options::OPT_fno_ptrauth_intrinsics))
1497 if (!DriverArgs.hasArg(options::OPT_fptrauth_calls,
1498 options::OPT_fno_ptrauth_calls))
1501 if (!DriverArgs.hasArg(options::OPT_fptrauth_returns,
1502 options::OPT_fno_ptrauth_returns))
1505 if (!DriverArgs.hasArg(options::OPT_fptrauth_auth_traps,
1506 options::OPT_fno_ptrauth_auth_traps))
1510 options::OPT_fptrauth_vtable_pointer_address_discrimination,
1511 options::OPT_fno_ptrauth_vtable_pointer_address_discrimination))
1515 options::OPT_fptrauth_vtable_pointer_type_discrimination,
1516 options::OPT_fno_ptrauth_vtable_pointer_type_discrimination))
1519 if (!DriverArgs.hasArg(options::OPT_fptrauth_indirect_gotos,
1520 options::OPT_fno_ptrauth_indirect_gotos))
1523 if (!DriverArgs.hasArg(options::OPT_fptrauth_init_fini,
1524 options::OPT_fno_ptrauth_init_fini))
1531 ? Args.getLastArg(options::OPT_msign_return_address_EQ,
1532 options::OPT_mbranch_protection_EQ)
1533 : Args.getLastArg(options::OPT_mbranch_protection_EQ);
1546 if (A->getOption().matches(options::OPT_msign_return_address_EQ)) {
1620 // Determine floating point ABI from the options & target defaults.
1640 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge,
1641 options::OPT_mno_global_merge)) {
1643 if (A->getOption().matches(options::OPT_mno_global_merge))
1649 if (!Args.hasFlag(options::OPT_mimplicit_float,
1650 options::OPT_mno_implicit_float, true))
1653 if (Args.getLastArg(options::OPT_mcmse))
1753 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
1771 if (!Args.hasFlag(options::OPT_mred_zone, options::OPT_mno_red_zone, true) ||
1772 Args.hasArg(options::OPT_mkernel) ||
1773 Args.hasArg(options::OPT_fapple_kext))
1776 if (!Args.hasFlag(options::OPT_mimplicit_float,
1777 options::OPT_mno_implicit_float, true))
1783 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge,
1784 options::OPT_mno_global_merge)) {
1786 if (A->getOption().matches(options::OPT_mno_global_merge))
1799 if (Arg *A = Args.getLastArg(options::OPT_msve_vector_bits_EQ)) {
1826 if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_mtune_EQ)) {
1836 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_intrinsics,
1837 options::OPT_fno_ptrauth_intrinsics);
1838 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_calls,
1839 options::OPT_fno_ptrauth_calls);
1840 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_returns,
1841 options::OPT_fno_ptrauth_returns);
1842 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_auth_traps,
1843 options::OPT_fno_ptrauth_auth_traps);
1845 CmdArgs, options::OPT_fptrauth_vtable_pointer_address_discrimination,
1846 options::OPT_fno_ptrauth_vtable_pointer_address_discrimination);
1848 CmdArgs, options::OPT_fptrauth_vtable_pointer_type_discrimination,
1849 options::OPT_fno_ptrauth_vtable_pointer_type_discrimination);
1851 CmdArgs, options::OPT_fptrauth_type_info_vtable_pointer_discrimination,
1852 options::OPT_fno_ptrauth_type_info_vtable_pointer_discrimination);
1853 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_init_fini,
1854 options::OPT_fno_ptrauth_init_fini);
1856 CmdArgs, options::OPT_fptrauth_function_pointer_type_discrimination,
1857 options::OPT_fno_ptrauth_function_pointer_type_discrimination);
1859 Args.addOptInFlag(CmdArgs, options::OPT_fptrauth_indirect_gotos,
1860 options::OPT_fno_ptrauth_indirect_gotos);
1873 if (const Arg *A = Args.getLastArg(options::OPT_mtune_EQ)) {
1905 if (Arg *A = Args.getLastArg(options::OPT_mldc1_sdc1,
1906 options::OPT_mno_ldc1_sdc1)) {
1907 if (A->getOption().matches(options::OPT_mno_ldc1_sdc1)) {
1913 if (Arg *A = Args.getLastArg(options::OPT_mcheck_zero_division,
1914 options::OPT_mno_check_zero_division)) {
1915 if (A->getOption().matches(options::OPT_mno_check_zero_division)) {
1921 if (Args.getLastArg(options::OPT_mfix4300)) {
1926 if (Arg *A = Args.getLastArg(options::OPT_G)) {
1933 Arg *GPOpt = Args.getLastArg(options::OPT_mgpopt, options::OPT_mno_gpopt);
1935 Args.getLastArg(options::OPT_mabicalls, options::OPT_mno_abicalls);
1939 // options conflict. We want to be certain that -mno-abicalls -mgpopt is
1948 ABICalls && ABICalls->getOption().matches(options::OPT_mno_abicalls);
1959 bool WantGPOpt = GPOpt && GPOpt->getOption().matches(options::OPT_mgpopt);
1965 Arg *LocalSData = Args.getLastArg(options::OPT_mlocal_sdata,
1966 options::OPT_mno_local_sdata);
1967 Arg *ExternSData = Args.getLastArg(options::OPT_mextern_sdata,
1968 options::OPT_mno_extern_sdata);
1969 Arg *EmbeddedData = Args.getLastArg(options::OPT_membedded_data,
1970 options::OPT_mno_embedded_data);
1973 if (LocalSData->getOption().matches(options::OPT_mlocal_sdata)) {
1983 if (ExternSData->getOption().matches(options::OPT_mextern_sdata)) {
1993 if (EmbeddedData->getOption().matches(options::OPT_membedded_data)) {
2007 if (Arg *A = Args.getLastArg(options::OPT_mcompact_branches_EQ)) {
2020 if (Arg *A = Args.getLastArg(options::OPT_mrelax_pic_calls,
2021 options::OPT_mno_relax_pic_calls)) {
2022 if (A->getOption().matches(options::OPT_mno_relax_pic_calls)) {
2033 if (Args.getLastArg(options::OPT_mtune_EQ)) {
2060 for (const Arg *A : Args.filtered(options::OPT_mabi_EQ)) {
2121 if (Args.getLastArg(options::OPT_shared, options::OPT_fpic,
2122 options::OPT_fPIC)) {
2125 if (Args.hasArg(options::OPT_G)) {
2128 } else if (Args.getLastArgValue(options::OPT_mcmodel_EQ)
2133 if (Args.hasArg(options::OPT_G)) {
2139 if (Args.hasArg(options::OPT_G)) {
2142 } else if (Arg *A = Args.getLastArg(options::OPT_G)) {
2160 if (!Args.hasFlag(options::OPT_mimplicit_float,
2161 options::OPT_mno_implicit_float, true))
2164 if (const Arg *A = Args.getLastArg(options::OPT_mtune_EQ)) {
2173 if (Arg *A = Args.getLastArg(options::OPT_mrvv_vector_bits_EQ)) {
2231 if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_mtune_EQ)) {
2246 if (const Arg *A = Args.getLastArg(options::OPT_mtune_EQ)) {
2255 Args.hasFlag(options::OPT_mbackchain, options::OPT_mno_backchain, false);
2256 bool HasPackedStack = Args.hasFlag(options::OPT_mpacked_stack,
2257 options::OPT_mno_packed_stack, false);
2283 if (!Args.hasFlag(options::OPT_mred_zone, options::OPT_mno_red_zone, true) ||
2284 Args.hasArg(options::OPT_mkernel) ||
2285 Args.hasArg(options::OPT_fapple_kext))
2288 if (!Args.hasFlag(options::OPT_mtls_direct_seg_refs,
2289 options::OPT_mno_tls_direct_seg_refs, true))
2294 bool NoImplicitFloat = (Args.hasArg(options::OPT_mkernel) ||
2295 Args.hasArg(options::OPT_fapple_kext));
2297 options::OPT_msoft_float, options::OPT_mno_soft_float,
2298 options::OPT_mimplicit_float, options::OPT_mno_implicit_float)) {
2300 NoImplicitFloat = (O.matches(options::OPT_mno_implicit_float) ||
2301 O.matches(options::OPT_msoft_float));
2306 if (Arg *A = Args.getLastArg(options::OPT_masm_EQ)) {
2321 if (Arg *A = Args.getLastArg(options::OPT_mskip_rax_setup,
2322 options::OPT_mno_skip_rax_setup))
2323 if (A->getOption().matches(options::OPT_mskip_rax_setup))
2327 if (Args.hasFlag(options::OPT_miamcu, options::OPT_mno_iamcu, false)) {
2337 if (!Args.hasArg(clang::driver::options::OPT_march_EQ) &&
2342 if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_mtune_EQ)) {
2370 if (!Args.hasArg(options::OPT_fno_short_enums))
2372 if (Args.getLastArg(options::OPT_mieee_rnd_near)) {
2382 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
2388 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) {
2406 if (!Args.hasArg(options::OPT_fvisibility_EQ,
2407 options::OPT_fvisibility_ms_compat))
2421 if (C.getArgs().hasArg(options::OPT__HASH_HASH_HASH))
2452 if (!D.SysRoot.empty() && !Args.hasArg(options::OPT__sysroot_EQ)) {
2463 if (O.getID() == options::OPT_x)
2466 if (O.getGroup().isValid() && O.getGroup().getID() == options::OPT_M_Group)
2468 if (O.getID() == options::OPT_gen_cdb_fragment_path)
2474 if (O.getID() == options::OPT_o)
2491 if (C.getArgs().hasArg(options::OPT__HASH_HASH_HASH))
2545 Args.addOptInFlag(CmdArgs, options::OPT_mrelax_all,
2546 options::OPT_mno_relax_all);
2552 if (Args.hasFlag(options::OPT_mincremental_linker_compatible,
2553 options::OPT_mno_incremental_linker_compatible,
2557 Args.AddLastArg(CmdArgs, options::OPT_femit_dwarf_unwind_EQ);
2559 Args.addOptInFlag(CmdArgs, options::OPT_femit_compact_unwind_non_canonical,
2560 options::OPT_fno_emit_compact_unwind_non_canonical);
2579 Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler,
2580 options::OPT_mimplicit_it_EQ)) {
2583 if (A->getOption().getID() == options::OPT_mimplicit_it_EQ) {
2723 // "-gdwarf-N" options are not cc1as options.
2760 // The flag is a -Wa / -Xassembler argument and Options doesn't
2797 Args.AddLastArg(CmdArgs, options::OPT_fembed_bitcode_EQ);
2868 // -ffp-exception-behavior options: strict, maytrap, ignore
2870 // -ffp-eval-method options: double, extended, source
2892 // Lambda to set fast-math options. This is also used by -ffp-model=fast
2922 if (const Arg *A = Args.getLastArg(options::OPT_flimited_precision_EQ)) {
2932 case options::OPT_fcx_limited_range:
2944 case options::OPT_fno_cx_limited_range:
2957 case options::OPT_fcx_fortran_rules:
2966 case options::OPT_fno_cx_fortran_rules:
2978 case options::OPT_fcomplex_arithmetic_EQ: {
3013 case options::OPT_ffp_model_EQ: {
3056 // Options controlling individual features
3057 case options::OPT_fhonor_infinities: HonorINFs = true; break;
3058 case options::OPT_fno_honor_infinities: HonorINFs = false; break;
3059 case options::OPT_fhonor_nans: HonorNaNs = true; break;
3060 case options::OPT_fno_honor_nans: HonorNaNs = false; break;
3061 case options::OPT_fapprox_func: ApproxFunc = true; break;
3062 case options::OPT_fno_approx_func: ApproxFunc = false; break;
3063 case options::OPT_fmath_errno: MathErrno = true; break;
3064 case options::OPT_fno_math_errno: MathErrno = false; break;
3065 case options::OPT_fassociative_math: AssociativeMath = true; break;
3066 case options::OPT_fno_associative_math: AssociativeMath = false; break;
3067 case options::OPT_freciprocal_math: ReciprocalMath = true; break;
3068 case options::OPT_fno_reciprocal_math: ReciprocalMath = false; break;
3069 case options::OPT_fsigned_zeros: SignedZeros = true; break;
3070 case options::OPT_fno_signed_zeros: SignedZeros = false; break;
3071 case options::OPT_ftrapping_math:
3083 case options::OPT_fno_trapping_math:
3096 case options::OPT_frounding_math:
3100 case options::OPT_fno_rounding_math:
3104 case options::OPT_fdenormal_fp_math_EQ:
3113 case options::OPT_fdenormal_fp_math_f32_EQ:
3122 case options::OPT_ffp_contract: {
3135 case options::OPT_ffp_exception_behavior_EQ: {
3157 case options::OPT_ffp_eval_method_EQ: {
3167 case options::OPT_fexcess_precision_EQ: {
3189 case options::OPT_ffinite_math_only:
3193 case options::OPT_fno_finite_math_only:
3198 case options::OPT_funsafe_math_optimizations:
3208 case options::OPT_fno_unsafe_math_optimizations:
3223 case options::OPT_Ofast:
3228 case options::OPT_ffast_math: {
3232 case options::OPT_fno_fast_math:
3258 // options after that.
3261 // subsequent options conflict then emit warning diagnostic.
3377 if (const Arg *A = Args.getLastArg(options::OPT_mfpmath_EQ)) {
3383 if (Args.hasFlag(options::OPT_fno_strict_float_cast_overflow,
3384 options::OPT_fstrict_float_cast_overflow, false))
3391 if (Args.hasArg(options::OPT_fcomplex_arithmetic_EQ))
3395 if (Args.hasArg(options::OPT_fcx_limited_range))
3397 if (Args.hasArg(options::OPT_fcx_fortran_rules))
3399 if (Args.hasArg(options::OPT_fno_cx_limited_range))
3401 if (Args.hasArg(options::OPT_fno_cx_fortran_rules))
3409 if (!Args.hasArg(options::OPT__analyzer_no_default_checks)) {
3460 if (Arg *A = Args.getLastArg(options::OPT__analyzer_output))
3471 Args.AddAllArgValues(CmdArgs, options::OPT_Xanalyzer);
3499 if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector,
3500 options::OPT_fstack_protector_all,
3501 options::OPT_fstack_protector_strong,
3502 options::OPT_fstack_protector)) {
3503 if (A->getOption().matches(options::OPT_fstack_protector))
3506 else if (A->getOption().matches(options::OPT_fstack_protector_strong))
3508 else if (A->getOption().matches(options::OPT_fstack_protector_all))
3526 for (const Arg *A : Args.filtered(options::OPT__param)) {
3539 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_EQ)) {
3554 if (!Args.hasArg(options::OPT_mstack_protector_guard_offset_EQ)) {
3566 if (Arg *A = Args.getLastArg(options::OPT_mtp_mode_EQ)) {
3585 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_offset_EQ)) {
3605 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_reg_EQ)) {
3622 if (Arg *A = Args.getLastArg(options::OPT_mstack_protector_guard_symbol_EQ)) {
3644 Args.addOptInFlag(CmdArgs, options::OPT_fstack_clash_protection,
3645 options::OPT_fno_stack_clash_protection);
3659 case options::OPT_ftrivial_auto_var_init: {
3690 Args.getLastArg(options::OPT_ftrivial_auto_var_init_stop_after)) {
3691 if (!Args.hasArg(options::OPT_ftrivial_auto_var_init) ||
3693 Args.getLastArg(options::OPT_ftrivial_auto_var_init)->getValue()) ==
3704 if (Arg *A = Args.getLastArg(options::OPT_ftrivial_auto_var_init_max_size)) {
3705 if (!Args.hasArg(options::OPT_ftrivial_auto_var_init) ||
3707 Args.getLastArg(options::OPT_ftrivial_auto_var_init)->getValue()) ==
3724 options::OPT_cl_opt_disable,
3725 options::OPT_cl_strict_aliasing,
3726 options::OPT_cl_single_precision_constant,
3727 options::OPT_cl_finite_math_only,
3728 options::OPT_cl_kernel_arg_info,
3729 options::OPT_cl_unsafe_math_optimizations,
3730 options::OPT_cl_fast_relaxed_math,
3731 options::OPT_cl_mad_enable,
3732 options::OPT_cl_no_signed_zeros,
3733 options::OPT_cl_fp32_correctly_rounded_divide_sqrt,
3734 options::OPT_cl_uniform_work_group_size
3737 if (Arg *A = Args.getLastArg(options::OPT_cl_std_EQ)) {
3740 } else if (Arg *A = Args.getLastArg(options::OPT_cl_ext_EQ)) {
3751 (Args.hasArg(options::OPT_cl_std_EQ) && types::isSrcFile(InputType))) &&
3752 !Args.hasArg(options::OPT_cl_no_stdinc)) {
3760 const unsigned ForwardedArguments[] = {options::OPT_dxil_validator_version,
3761 options::OPT_D,
3762 options::OPT_I,
3763 options::OPT_O,
3764 options::OPT_emit_llvm,
3765 options::OPT_emit_obj,
3766 options::OPT_disable_llvm_passes,
3767 options::OPT_fnative_half_type,
3768 options::OPT_hlsl_entrypoint};
3775 if (!Args.hasArg(options::OPT_dxc_no_stdinc) &&
3776 !Args.hasArg(options::OPT_nostdinc))
3782 if (!Args.hasArg(options::OPT_fopenacc))
3787 if (Arg *A = Args.getLastArg(options::OPT_openacc_macro_override)) {
3800 if (!Args.hasArg(options::OPT_fno_objc_arc, options::OPT_fobjc_arc)) {
3801 if (const Arg *A = Args.getLastArg(options::OPT_ccc_arcmt_check,
3802 options::OPT_ccc_arcmt_modify,
3803 options::OPT_ccc_arcmt_migrate)) {
3807 case options::OPT_ccc_arcmt_check:
3810 case options::OPT_ccc_arcmt_modify:
3813 case options::OPT_ccc_arcmt_migrate:
3818 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_report_output);
3819 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_emit_arc_errors);
3824 Args.ClaimAllArgs(options::OPT_ccc_arcmt_check);
3825 Args.ClaimAllArgs(options::OPT_ccc_arcmt_modify);
3826 Args.ClaimAllArgs(options::OPT_ccc_arcmt_migrate);
3829 if (const Arg *A = Args.getLastArg(options::OPT_ccc_objcmt_migrate)) {
3837 if (!Args.hasArg(options::OPT_objcmt_migrate_literals,
3838 options::OPT_objcmt_migrate_subscripting,
3839 options::OPT_objcmt_migrate_property)) {
3845 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals);
3846 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting);
3847 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property);
3850 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals);
3851 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting);
3852 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property);
3853 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_all);
3854 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readonly_property);
3855 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readwrite_property);
3856 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property_dot_syntax);
3857 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_annotation);
3858 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_instancetype);
3859 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_nsmacros);
3860 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_protocol_conformance);
3861 Args.AddLastArg(CmdArgs, options::OPT_objcmt_atomic_property);
3862 Args.AddLastArg(CmdArgs, options::OPT_objcmt_returns_innerpointer_property);
3863 Args.AddLastArg(CmdArgs, options::OPT_objcmt_ns_nonatomic_iosonly);
3864 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_designated_init);
3865 Args.AddLastArg(CmdArgs, options::OPT_objcmt_allowlist_dir_path);
3873 Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin,
3874 !Args.hasArg(options::OPT_mkernel));
3879 if (Args.hasArg(options::OPT_ffreestanding))
3882 // Process the -fno-builtin-* options.
3883 for (const Arg *A : Args.filtered(options::OPT_fno_builtin_)) {
3916 if (Arg *ModuleOutputEQ = Args.getLastArg(options::OPT_fmodule_output_EQ))
3920 if (Arg *FinalOutput = Args.getLastArg(options::OPT_o);
3921 FinalOutput && Args.hasArg(options::OPT_c))
3943 if (Args.hasFlag(options::OPT_fmodules, options::OPT_fno_modules, false)) {
3944 bool AllowedInCXX = Args.hasFlag(options::OPT_fcxx_modules,
3945 options::OPT_fno_cxx_modules, true);
3956 if (Args.hasFlag(options::OPT_fimplicit_module_maps,
3957 options::OPT_fno_implicit_module_maps, HaveClangModules))
3961 Args.addOptInFlag(CmdArgs, options::OPT_fmodules_decluse,
3962 options::OPT_fno_modules_decluse);
3966 if (Args.hasFlag(options::OPT_fmodules_strict_decluse,
3967 options::OPT_fno_modules_strict_decluse, false))
3972 if (!Args.hasFlag(options::OPT_fimplicit_modules,
3973 options::OPT_fno_implicit_modules, HaveClangModules)) {
3981 if (Arg *A = Args.getLastArg(options::OPT_fmodules_cache_path))
4006 if (Args.hasFlag(options::OPT_fprebuilt_implicit_modules,
4007 options::OPT_fno_prebuilt_implicit_modules, false))
4009 if (Args.hasFlag(options::OPT_fmodules_validate_input_files_content,
4010 options::OPT_fno_modules_validate_input_files_content,
4017 Args.AddLastArg(CmdArgs, options::OPT_fmodule_name_EQ);
4021 Args.AddAllArgs(CmdArgs, options::OPT_fmodule_map_file);
4025 if (Args.hasArg(options::OPT_fbuiltin_module_map)) {
4039 Args.AddAllArgs(CmdArgs, options::OPT_fmodule_file);
4042 for (const Arg *A : Args.filtered(options::OPT_fprebuilt_module_path)) {
4048 Args.ClaimAllArgs(options::OPT_fmodule_file);
4064 Args.AddLastArg(CmdArgs, options::OPT_fmodules_user_build_path);
4067 Args.AddAllArgs(CmdArgs, options::OPT_fmodules_ignore_macro);
4068 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_interval);
4069 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_after);
4072 Args.AddLastArg(CmdArgs, options::OPT_fbuild_session_timestamp);
4074 if (Arg *A = Args.getLastArg(options::OPT_fbuild_session_file)) {
4075 if (Args.hasArg(options::OPT_fbuild_session_timestamp))
4090 options::OPT_fmodules_validate_once_per_build_session)) {
4091 if (!Args.getLastArg(options::OPT_fbuild_session_timestamp,
4092 options::OPT_fbuild_session_file))
4096 options::OPT_fmodules_validate_once_per_build_session);
4099 if (Args.hasFlag(options::OPT_fmodules_validate_system_headers,
4100 options::OPT_fno_modules_validate_system_headers,
4105 options::OPT_fmodules_disable_diagnostic_validation);
4107 Args.ClaimAllArgs(options::OPT_fbuild_session_timestamp);
4108 Args.ClaimAllArgs(options::OPT_fbuild_session_file);
4109 Args.ClaimAllArgs(options::OPT_fmodules_validate_once_per_build_session);
4110 Args.ClaimAllArgs(options::OPT_fmodules_validate_system_headers);
4111 Args.ClaimAllArgs(options::OPT_fno_modules_validate_system_headers);
4112 Args.ClaimAllArgs(options::OPT_fmodules_disable_diagnostic_validation);
4119 if (Args.hasArg(options::OPT_modules_reduced_bmi) &&
4124 if (Args.hasArg(options::OPT_fmodule_output_EQ))
4125 Args.AddLastArg(CmdArgs, options::OPT_fmodule_output_EQ);
4135 Args.ClaimAllArgs(options::OPT_modules_reduced_bmi);
4146 Args.ClaimAllArgs(options::OPT_fmodule_output);
4147 Args.ClaimAllArgs(options::OPT_fmodule_output_EQ);
4156 if (const Arg *A = Args.getLastArg(options::OPT_fsigned_char,
4157 options::OPT_fno_signed_char,
4158 options::OPT_funsigned_char,
4159 options::OPT_fno_unsigned_char)) {
4160 if (A->getOption().matches(options::OPT_funsigned_char) ||
4161 A->getOption().matches(options::OPT_fno_signed_char)) {
4169 Args.AddLastArg(CmdArgs, options::OPT_fchar8__t, options::OPT_fno_char8__t);
4171 if (const Arg *A = Args.getLastArg(options::OPT_fshort_wchar,
4172 options::OPT_fno_short_wchar)) {
4173 if (A->getOption().matches(options::OPT_fshort_wchar)) {
4199 if (!Args.hasFlag(options::OPT_fobjc_legacy_dispatch,
4200 options::OPT_fno_objc_legacy_dispatch,
4234 if (Args.hasFlag(options::OPT_fobjc_arc_exceptions,
4235 options::OPT_fno_objc_arc_exceptions,
4240 // Silence warning for full exception code emission options when explicitly
4242 if (Args.hasArg(options::OPT_fno_objc_arc)) {
4243 Args.ClaimAllArgs(options::OPT_fobjc_arc_exceptions);
4244 Args.ClaimAllArgs(options::OPT_fno_objc_arc_exceptions);
4251 options::OPT_fobjc_convert_messages_to_runtime_calls,
4252 options::OPT_fno_objc_convert_messages_to_runtime_calls);
4255 options::OPT_fno_objc_convert_messages_to_runtime_calls))
4267 Args.getLastArg(options::OPT_fobjc_weak, options::OPT_fno_objc_weak);
4271 if (WeakArg->getOption().matches(options::OPT_fobjc_weak))
4278 if (Args.hasArg(options::OPT_fobjc_disable_direct_methods_for_testing))
4287 if (const Arg *A = Args.getLastArg(options::OPT__SLASH_diagnostics_classic,
4288 options::OPT__SLASH_diagnostics_column,
4289 options::OPT__SLASH_diagnostics_caret)) {
4291 case options::OPT__SLASH_diagnostics_caret:
4295 case options::OPT__SLASH_diagnostics_column:
4299 case options::OPT__SLASH_diagnostics_classic:
4307 if (!Args.hasFlag(options::OPT_fcaret_diagnostics,
4308 options::OPT_fno_caret_diagnostics, CaretDefault))
4311 Args.addOptOutFlag(CmdArgs, options::OPT_fdiagnostics_fixit_info,
4312 options::OPT_fno_diagnostics_fixit_info);
4313 Args.addOptOutFlag(CmdArgs, options::OPT_fdiagnostics_show_option,
4314 options::OPT_fno_diagnostics_show_option);
4317 Args.getLastArg(options::OPT_fdiagnostics_show_category_EQ)) {
4322 Args.addOptInFlag(CmdArgs, options::OPT_fdiagnostics_show_hotness,
4323 options::OPT_fno_diagnostics_show_hotness);
4326 Args.getLastArg(options::OPT_fdiagnostics_hotness_threshold_EQ)) {
4333 Args.getLastArg(options::OPT_fdiagnostics_misexpect_tolerance_EQ)) {
4339 if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_format_EQ)) {
4348 options::OPT_fdiagnostics_show_note_include_stack,
4349 options::OPT_fno_diagnostics_show_note_include_stack)) {
4351 if (O.matches(options::OPT_fdiagnostics_show_note_include_stack))
4361 Args.getLastArg(options::OPT_fcolor_diagnostics,
4362 options::OPT_fno_color_diagnostics);
4363 if (const Arg *A = Args.getLastArg(options::OPT_fdiagnostics_color_EQ)) {
4373 if (Args.hasArg(options::OPT_fansi_escape_codes))
4376 Args.addOptOutFlag(CmdArgs, options::OPT_fshow_source_location,
4377 options::OPT_fno_show_source_location);
4379 Args.addOptOutFlag(CmdArgs, options::OPT_fdiagnostics_show_line_numbers,
4380 options::OPT_fno_diagnostics_show_line_numbers);
4382 if (Args.hasArg(options::OPT_fdiagnostics_absolute_paths))
4385 if (!Args.hasFlag(options::OPT_fshow_column, options::OPT_fno_show_column,
4389 Args.addOptOutFlag(CmdArgs, options::OPT_fspell_checking,
4390 options::OPT_fno_spell_checking);
4395 Arg = Args.getLastArg(options::OPT_gsplit_dwarf, options::OPT_gsplit_dwarf_EQ,
4396 options::OPT_gno_split_dwarf);
4397 if (!Arg || Arg->getOption().matches(options::OPT_gno_split_dwarf))
4400 if (Arg->getOption().matches(options::OPT_gsplit_dwarf))
4418 Args.getLastArg(options::OPT_gdwarf64, options::OPT_gdwarf32);
4422 if (DwarfFormatArg->getOption().matches(options::OPT_gdwarf64)) {
4443 if (Args.hasFlag(options::OPT_fdebug_info_for_profiling,
4444 options::OPT_fno_debug_info_for_profiling, false) &&
4446 Args.getLastArg(options::OPT_fdebug_info_for_profiling), Args, D, TC))
4449 // The 'g' groups options involve a somewhat intricate sequence of decisions
4461 Args.hasFlag(options::OPT_fsplit_dwarf_inlining,
4462 options::OPT_fno_split_dwarf_inlining, false);
4467 if (IRInput || Args.hasArg(options::OPT_g_Group)) {
4476 if (const Arg *A = Args.getLastArg(options::OPT_g_Group)) {
4481 A->getOption().matches(options::OPT_gN_Group)) {
4498 Args.getLastArg(options::OPT_gTune_Group, options::OPT_ggdbN_Group)) {
4501 if (A->getOption().matches(options::OPT_glldb))
4503 else if (A->getOption().matches(options::OPT_gsce))
4505 else if (A->getOption().matches(options::OPT_gdbx))
4518 if (const Arg *A = Args.getLastArg(options::OPT_gcodeview))
4544 Args.ClaimAllArgs(options::OPT_fdebug_default_version);
4554 if (const Arg *A = Args.getLastArg(options::OPT_gstrict_dwarf))
4556 if (Args.hasFlag(options::OPT_gstrict_dwarf, options::OPT_gno_strict_dwarf,
4561 Args.ClaimAllArgs(options::OPT_g_flags_Group);
4569 if (const Arg *A = Args.getLastArg(options::OPT_gcolumn_info))
4571 if (!Args.hasFlag(options::OPT_gcolumn_info, options::OPT_gno_column_info,
4577 // FIXME: Move backend command line options to the module.
4578 if (Args.hasFlag(options::OPT_gmodules, options::OPT_gno_modules, false)) {
4581 if (checkDebugInfoOption(Args.getLastArg(options::OPT_gmodules), Args, D,
4598 // We parse these two '-f' options whether or not they will be used,
4601 options::OPT_fstandalone_debug, options::OPT_fno_standalone_debug,
4604 if (const Arg *A = Args.getLastArg(options::OPT_fstandalone_debug))
4609 if (Args.hasFlag(options::OPT_fno_eliminate_unused_debug_types,
4610 options::OPT_feliminate_unused_debug_types, false))
4616 if (Args.hasFlag(options::OPT_gembed_source, options::OPT_gno_embed_source,
4622 const Arg *A = Args.getLastArg(options::OPT_gembed_source);
4639 Args.addOptInFlag(CmdArgs, options::OPT_gcodeview_ghash,
4640 options::OPT_gno_codeview_ghash);
4642 Args.addOptOutFlag(CmdArgs, options::OPT_gcodeview_command_line,
4643 options::OPT_gno_codeview_command_line);
4646 Args.addOptOutFlag(CmdArgs, options::OPT_ginline_line_tables,
4647 options::OPT_gno_inline_line_tables);
4665 if (Args.hasFlag(options::OPT_fdebug_macro, options::OPT_fno_debug_macro,
4667 if (checkDebugInfoOption(Args.getLastArg(options::OPT_fdebug_macro), Args,
4673 Args.getLastArg(options::OPT_ggnu_pubnames, options::OPT_gno_gnu_pubnames,
4674 options::OPT_gpubnames, options::OPT_gno_pubnames);
4679 (PubnamesArg->getOption().matches(options::OPT_gpubnames) ||
4680 PubnamesArg->getOption().matches(options::OPT_ggnu_pubnames)));
4683 (!PubnamesArg->getOption().matches(options::OPT_gno_gnu_pubnames) &&
4684 !PubnamesArg->getOption().matches(options::OPT_gno_pubnames))))
4686 options::OPT_gpubnames)
4691 Args.getLastArg(options::OPT_gsimple_template_names,
4692 options::OPT_gno_simple_template_names);
4697 if (Opt.matches(options::OPT_gsimple_template_names)) {
4707 options::OPT_gtemplate_alias, options::OPT_gno_template_alias)) {
4712 UseDebugTemplateAlias = Opt.matches(options::OPT_gtemplate_alias);
4718 if (const Arg *A = Args.getLastArg(options::OPT_gsrc_hash_EQ)) {
4723 Args.addOptInFlag(CmdArgs, options::OPT_fdebug_ranges_base_address,
4724 options::OPT_fno_debug_ranges_base_address);
4730 if (const Arg *A = Args.getLastArg(options::OPT_gdwarf_aranges))
4737 Args.addOptInFlag(CmdArgs, options::OPT_fforce_dwarf_frame,
4738 options::OPT_fno_force_dwarf_frame);
4741 if (Args.hasFlag(options::OPT_fdebug_types_section,
4742 options::OPT_fno_debug_types_section, false)) {
4745 << Args.getLastArg(options::OPT_fdebug_types_section)
4749 Args.getLastArg(options::OPT_fdebug_types_section), Args, D,
4758 Args.getLastArg(options::OPT_gomit_unreferenced_methods,
4759 options::OPT_gno_omit_unreferenced_methods))
4761 if (Args.hasFlag(options::OPT_gomit_unreferenced_methods,
4762 options::OPT_gno_omit_unreferenced_methods, false) &&
4772 if (!Args.hasFlag(options::OPT_fdwarf_directory_asm,
4773 options::OPT_fno_dwarf_directory_asm,
4791 if (Args.hasFlag(options::OPT_fjmc, options::OPT_fno_jmc, false)) {
4820 unsigned RTOptionID = options::OPT__SLASH_MT;
4822 if (Args.hasArg(options::OPT__SLASH_LDd))
4825 RTOptionID = options::OPT__SLASH_MTd;
4827 if (Arg *A = Args.getLastArg(options::OPT__SLASH_M_Group))
4830 if (Arg *A = Args.getLastArg(options::OPT_fms_runtime_lib_EQ)) {
4832 .Case("static", options::OPT__SLASH_MT)
4833 .Case("static_dbg", options::OPT__SLASH_MTd)
4834 .Case("dll", options::OPT__SLASH_MD)
4835 .Case("dll_dbg", options::OPT__SLASH_MDd)
4836 .Default(options::OPT__SLASH_MT);
4841 case options::OPT__SLASH_MD:
4842 if (Args.hasArg(options::OPT__SLASH_LDd))
4848 case options::OPT__SLASH_MDd:
4854 case options::OPT__SLASH_MT:
4855 if (Args.hasArg(options::OPT__SLASH_LDd))
4861 case options::OPT__SLASH_MTd:
4871 if (Args.hasArg(options::OPT_fms_omit_default_lib)) {
4898 Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext);
4920 Args.hasFlag(options::OPT_offload_new_driver,
4921 options::OPT_no_offload_new_driver, false));
4924 Args.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc, false);
4986 if (const Arg *MJ = Args.getLastArg(options::OPT_MJ)) {
4988 Args.ClaimAllArgs(options::OPT_MJ);
4990 Args.getLastArg(options::OPT_gen_cdb_fragment_path)) {
4993 Args.ClaimAllArgs(options::OPT_gen_cdb_fragment_path);
5039 if (Args.getLastArg(options::OPT_mprintf_kind_EQ)) {
5042 Args.getLastArgValue(options::OPT_mprintf_kind_EQ)));
5051 if (const Arg *PF = Args.getLastArg(options::OPT_mprintf_kind_EQ))
5054 if (Args.hasFlag(options::OPT_fsycl, options::OPT_fno_sycl, false)) {
5057 if (Arg *A = Args.getLastArg(options::OPT_sycl_std_EQ)) {
5087 // the given target. These come before user provided warning options
5100 UnifiedLTO = Args.hasFlag(options::OPT_funified_lto,
5101 options::OPT_fno_unified_lto, Triple.isPS());
5117 Args.ClaimAllArgs(options::OPT_mrelax_all);
5118 Args.ClaimAllArgs(options::OPT_mno_relax_all);
5119 Args.ClaimAllArgs(options::OPT_mincremental_linker_compatible);
5120 Args.ClaimAllArgs(options::OPT_mno_incremental_linker_compatible);
5126 Args.ClaimAllArgs(options::OPT_mimplicit_it_EQ);
5132 Args.ClaimAllArgs(options::OPT_Wa_COMMA);
5133 Args.ClaimAllArgs(options::OPT_Xassembler);
5134 Args.ClaimAllArgs(options::OPT_femit_dwarf_unwind_EQ);
5147 if (Args.hasArg(options::OPT_rewrite_objc) &&
5148 !Args.hasArg(options::OPT_g_Group))
5159 (void)Args.hasArg(options::OPT_force__cpusubtype__ALL);
5176 if (Arg *PrettySGFArg = Args.getLastArg(options::OPT_emit_pretty_sgf))
5179 Arg *SymbolGraphDirArg = Args.getLastArg(options::OPT_symbol_graph_dir_EQ);
5181 if (Arg *ProductNameArg = Args.getLastArg(options::OPT_product_name_EQ))
5184 Args.getLastArg(options::OPT_extract_api_ignores_EQ))
5187 Args.getLastArg(options::OPT_emit_extension_symbol_graphs)) {
5206 if (Triple.isAMDGCN() && IsOpenMPDevice && Args.hasArg(options::OPT_S) &&
5207 Args.hasArg(options::OPT_emit_llvm)) {
5215 Args.hasArg(options::OPT_interface_stub_version_EQ)
5216 ? Args.getLastArgValue(options::OPT_interface_stub_version_EQ)
5246 !Args.hasFlag(options::OPT_offload_new_driver,
5247 options::OPT_no_offload_new_driver, false) &&
5250 << Args.getLastArg(options::OPT_foffload_lto,
5251 options::OPT_foffload_lto_EQ)
5257 << Args.getLastArg(options::OPT_foffload_lto,
5258 options::OPT_foffload_lto_EQ)
5274 Args.AddLastArg(CmdArgs, options::OPT_dumpdir);
5276 if (const Arg *A = Args.getLastArg(options::OPT_fthinlto_index_EQ)) {
5279 Args.AddLastArg(CmdArgs, options::OPT_fthinlto_index_EQ);
5283 Args.addOptInFlag(CmdArgs, options::OPT_mregnames,
5284 options::OPT_mno_regnames);
5286 if (Args.getLastArg(options::OPT_fthin_link_bitcode_EQ))
5287 Args.AddLastArg(CmdArgs, options::OPT_fthin_link_bitcode_EQ);
5289 if (Args.getLastArg(options::OPT_save_temps_EQ))
5290 Args.AddLastArg(CmdArgs, options::OPT_save_temps_EQ);
5292 auto *MemProfArg = Args.getLastArg(options::OPT_fmemory_profile,
5293 options::OPT_fmemory_profile_EQ,
5294 options::OPT_fno_memory_profile);
5296 !MemProfArg->getOption().matches(options::OPT_fno_memory_profile))
5300 Args.getLastArg(options::OPT_fmemory_profile_use_EQ)) {
5304 if (auto *PGOInstrArg = Args.getLastArg(options::OPT_fprofile_generate,
5305 options::OPT_fprofile_generate_EQ))
5316 Args.AddLastArg(CmdArgs, options::OPT_fembed_bitcode_EQ);
5320 // Render target options.
5323 // reject options that shouldn't be supported in bitcode
5326 options::OPT_mkernel,
5327 options::OPT_fapple_kext,
5328 options::OPT_ffunction_sections,
5329 options::OPT_fno_function_sections,
5330 options::OPT_fdata_sections,
5331 options::OPT_fno_data_sections,
5332 options::OPT_fbasic_block_sections_EQ,
5333 options::OPT_funique_internal_linkage_names,
5334 options::OPT_fno_unique_internal_linkage_names,
5335 options::OPT_funique_section_names,
5336 options::OPT_fno_unique_section_names,
5337 options::OPT_funique_basic_block_section_names,
5338 options::OPT_fno_unique_basic_block_section_names,
5339 options::OPT_mrestrict_it,
5340 options::OPT_mno_restrict_it,
5341 options::OPT_mstackrealign,
5342 options::OPT_mno_stackrealign,
5343 options::OPT_mstack_alignment,
5344 options::OPT_mcmodel_EQ,
5345 options::OPT_mlong_calls,
5346 options::OPT_mno_long_calls,
5347 options::OPT_ggnu_pubnames,
5348 options::OPT_gdwarf_aranges,
5349 options::OPT_fdebug_types_section,
5350 options::OPT_fno_debug_types_section,
5351 options::OPT_fdwarf_directory_asm,
5352 options::OPT_fno_dwarf_directory_asm,
5353 options::OPT_mrelax_all,
5354 options::OPT_mno_relax_all,
5355 options::OPT_ftrap_function_EQ,
5356 options::OPT_ffixed_r9,
5357 options::OPT_mfix_cortex_a53_835769,
5358 options::OPT_mno_fix_cortex_a53_835769,
5359 options::OPT_ffixed_x18,
5360 options::OPT_mglobal_merge,
5361 options::OPT_mno_global_merge,
5362 options::OPT_mred_zone,
5363 options::OPT_mno_red_zone,
5364 options::OPT_Wa_COMMA,
5365 options::OPT_Xassembler,
5366 options::OPT_mllvm,
5372 // Render the CodeGen options that need to be passed.
5373 Args.addOptOutFlag(CmdArgs, options::OPT_foptimize_sibling_calls,
5374 options::OPT_fno_optimize_sibling_calls);
5395 if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) {
5396 if (A->getOption().matches(options::OPT_O4)) {
5445 if (Args.hasFlag(options::OPT_fno_verify_intermediate_code,
5446 options::OPT_fverify_intermediate_code, !IsAssertBuild)) {
5451 if (Args.hasFlag(options::OPT_fdiscard_value_names,
5452 options::OPT_fno_discard_value_names, !IsAssertBuild)) {
5453 if (Args.hasArg(options::OPT_fdiscard_value_names) &&
5469 if (Args.hasArg(options::OPT_static))
5472 if (Args.hasArg(options::OPT_municode))
5479 (isa<PreprocessJobAction>(JA) && Args.hasArg(options::OPT__analyze)))
5486 for (auto *Arg : Args.filtered(options::OPT_Xclang))
5492 for (auto *Arg : Args.filtered(options::OPT_Xanalyzer))
5511 if (const Arg *A = Args.getLastArg(options::OPT_falign_loops_EQ)) {
5535 auto MacroDefs = Args.getAllArgValues(options::OPT_D);
5559 Args.getLastArg(options::OPT_mno_pic_data_is_text_relative,
5560 options::OPT_mpic_data_is_text_relative);
5564 options::OPT_mno_pic_data_is_text_relative)) {
5583 if (Args.hasArg(options::OPT_mcmse) &&
5584 !Args.hasArg(options::OPT_fallow_unsupported)) {
5592 !Args.hasArg(options::OPT_fallow_unsupported))
5616 if (Arg *A = Args.getLastArg(options::OPT_meabi)) {
5633 Arg *A = Args.getLastArg(options::OPT_fsemantic_interposition,
5634 options::OPT_fno_semantic_interposition);
5641 else if (A->getOption().matches(options::OPT_fsemantic_interposition))
5650 if (Arg *A = Args.getLastArg(options::OPT_mthread_model)) {
5663 if (Arg *A = Args.getLastArg(options::OPT_fveclib)) {
5684 if (Args.hasFlag(options::OPT_fmerge_all_constants,
5685 options::OPT_fno_merge_all_constants, false))
5688 Args.addOptOutFlag(CmdArgs, options::OPT_fdelete_null_pointer_checks,
5689 options::OPT_fno_delete_null_pointer_checks);
5691 // LLVM Code Generator Options.
5693 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ_quadword_atomics)) {
5700 if (Arg *A = Args.getLastArg(options::OPT_mlong_double_128)) {
5708 if (Arg *A = Args.getLastArg(options::OPT_Wframe_larger_than_EQ)) {
5718 Args.addOptOutFlag(CmdArgs, options::OPT_fjump_tables,
5719 options::OPT_fno_jump_tables);
5720 Args.addOptInFlag(CmdArgs, options::OPT_fprofile_sample_accurate,
5721 options::OPT_fno_profile_sample_accurate);
5722 Args.addOptOutFlag(CmdArgs, options::OPT_fpreserve_as_comments,
5723 options::OPT_fno_preserve_as_comments);
5725 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) {
5730 if (Arg *A = Args.getLastArg(options::OPT_maix_struct_return,
5731 options::OPT_msvr4_struct_return)) {
5735 } else if (A->getOption().matches(options::OPT_maix_struct_return)) {
5738 assert(A->getOption().matches(options::OPT_msvr4_struct_return));
5743 if (Arg *A = Args.getLastArg(options::OPT_fpcc_struct_return,
5744 options::OPT_freg_struct_return)) {
5748 } else if (A->getOption().matches(options::OPT_fpcc_struct_return)) {
5751 assert(A->getOption().matches(options::OPT_freg_struct_return));
5756 if (Args.hasFlag(options::OPT_mrtd, options::OPT_mno_rtd, false)) {
5763 if (Args.hasArg(options::OPT_fenable_matrix)) {
5790 Args.addOptOutFlag(CmdArgs, options::OPT_fzero_initialized_in_bss,
5791 options::OPT_fno_zero_initialized_in_bss);
5799 OFastEnabled ? options::OPT_Ofast : options::OPT_fstrict_aliasing;
5802 if (!Args.hasFlag(options::OPT_fstrict_aliasing, StrictAliasingAliasOption,
5803 options::OPT_fno_strict_aliasing, !IsWindowsMSVC))
5805 if (Args.hasFlag(options::OPT_fpointer_tbaa, options::OPT_fno_pointer_tbaa,
5808 if (!Args.hasFlag(options::OPT_fstruct_path_tbaa,
5809 options::OPT_fno_struct_path_tbaa, true))
5811 Args.addOptInFlag(CmdArgs, options::OPT_fstrict_enums,
5812 options::OPT_fno_strict_enums);
5813 Args.addOptOutFlag(CmdArgs, options::OPT_fstrict_return,
5814 options::OPT_fno_strict_return);
5815 Args.addOptInFlag(CmdArgs, options::OPT_fallow_editor_placeholders,
5816 options::OPT_fno_allow_editor_placeholders);
5817 Args.addOptInFlag(CmdArgs, options::OPT_fstrict_vtable_pointers,
5818 options::OPT_fno_strict_vtable_pointers);
5819 Args.addOptInFlag(CmdArgs, options::OPT_fforce_emit_vtables,
5820 options::OPT_fno_force_emit_vtables);
5821 Args.addOptOutFlag(CmdArgs, options::OPT_foptimize_sibling_calls,
5822 options::OPT_fno_optimize_sibling_calls);
5823 Args.addOptOutFlag(CmdArgs, options::OPT_fescaping_block_tail_calls,
5824 options::OPT_fno_escaping_block_tail_calls);
5826 Args.AddLastArg(CmdArgs, options::OPT_ffine_grained_bitfield_accesses,
5827 options::OPT_fno_fine_grained_bitfield_accesses);
5829 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_relative_cxx_abi_vtables,
5830 options::OPT_fno_experimental_relative_cxx_abi_vtables);
5832 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_omit_vtable_rtti,
5833 options::OPT_fno_experimental_omit_vtable_rtti);
5835 Args.AddLastArg(CmdArgs, options::OPT_fdisable_block_signature_string,
5836 options::OPT_fno_disable_block_signature_string);
5839 Args.addOptInFlag(CmdArgs, options::OPT_fsplit_stack,
5840 options::OPT_fno_split_stack);
5843 if (Args.hasFlag(options::OPT_fprotect_parens,
5844 options::OPT_fno_protect_parens, false))
5849 if (Arg *A = Args.getLastArg(options::OPT_fextend_args_EQ)) {
5863 if (Arg *A = Args.getLastArg(options::OPT_mdouble_EQ)) {
5871 if (Arg *A = Args.getLastArg(options::OPT_LongDouble_Group)) {
5875 (A->getOption().getID() != options::OPT_mlong_double_80))
5885 if (!Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm,
5891 if (Arg *A = Args.getLastArg(options::OPT_fbinutils_version_EQ)) {
5910 if (Args.hasArg(options::OPT_fdebug_pass_structure)) {
5914 if (Args.hasArg(options::OPT_fdebug_pass_arguments)) {
5930 if (Args.hasFlag(options::OPT_mms_bitfields, options::OPT_mno_ms_bitfields,
5936 Args.addOptOutFlag(CmdArgs, options::OPT_fauto_import,
5937 options::OPT_fno_auto_import);
5940 if (Args.hasFlag(options::OPT_fms_volatile, options::OPT_fno_ms_volatile,
5947 if (Arg *A = Args.getLastArg(options::OPT_fdirect_access_external_data,
5948 options::OPT_fno_direct_access_external_data)) {
5949 if (A->getOption().matches(options::OPT_fdirect_access_external_data) !=
5958 if (Args.hasFlag(options::OPT_fno_plt, options::OPT_fplt, false)) {
5966 Args.hasFlag(options::OPT_ffreestanding, options::OPT_fhosted, false) ||
5971 Args.AddLastArg(CmdArgs, options::OPT_fno_knr_functions);
5984 options::OPT_fasynchronous_unwind_tables,
5985 options::OPT_fno_asynchronous_unwind_tables,
5989 Args.hasFlag(options::OPT_funwind_tables, options::OPT_fno_unwind_tables,
5998 if (!Args.getLastArg(options::OPT_gpu_use_aux_triple_only) &&
6016 if (Arg *A = Args.getLastArg(options::OPT_mtls_size_EQ)) {
6026 Args.AddLastArg(CmdArgs, options::OPT_mtls_size_EQ);
6071 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
6078 if (!Args.hasArg(options::OPT_fallow_unsupported)) {
6082 if ((Unsupported = Args.getLastArg(options::OPT_fapple_kext)) ||
6083 (Unsupported = Args.getLastArg(options::OPT_mkernel)))
6088 if ((Unsupported = Args.getLastArg(options::OPT_faltivec)))
6092 if ((Unsupported = Args.getLastArg(options::OPT_fno_altivec)))
6097 Args.AddAllArgs(CmdArgs, options::OPT_v);
6099 if (Args.getLastArg(options::OPT_H)) {
6103 Args.AddAllArgs(CmdArgs, options::OPT_fshow_skipped_includes);
6119 Args.AddLastArg(CmdArgs, options::OPT_P);
6120 Args.AddLastArg(CmdArgs, options::OPT_print_ivar_layout);
6136 if (Args.hasArg(options::OPT_fcrash_diagnostics_dir)) {
6137 StringRef Dir = Args.getLastArgValue(options::OPT_fcrash_diagnostics_dir);
6144 if (Args.hasFlag(options::OPT_ffunction_sections,
6145 options::OPT_fno_function_sections, UseSeparateSections)) {
6149 if (Arg *A = Args.getLastArg(options::OPT_fbasic_block_address_map,
6150 options::OPT_fno_basic_block_address_map)) {
6152 if (A->getOption().matches(options::OPT_fbasic_block_address_map))
6160 if (Arg *A = Args.getLastArg(options::OPT_fbasic_block_sections_EQ)) {
6189 if (Args.hasFlag(options::OPT_fdata_sections, options::OPT_fno_data_sections,
6194 Args.addOptOutFlag(CmdArgs, options::OPT_funique_section_names,
6195 options::OPT_fno_unique_section_names);
6196 Args.addOptInFlag(CmdArgs, options::OPT_fseparate_named_sections,
6197 options::OPT_fno_separate_named_sections);
6198 Args.addOptInFlag(CmdArgs, options::OPT_funique_internal_linkage_names,
6199 options::OPT_fno_unique_internal_linkage_names);
6200 Args.addOptInFlag(CmdArgs, options::OPT_funique_basic_block_section_names,
6201 options::OPT_fno_unique_basic_block_section_names);
6202 Args.addOptInFlag(CmdArgs, options::OPT_fconvergent_functions,
6203 options::OPT_fno_convergent_functions);
6205 if (Arg *A = Args.getLastArg(options::OPT_fsplit_machine_functions,
6206 options::OPT_fno_split_machine_functions)) {
6207 if (!A->getOption().matches(options::OPT_fno_split_machine_functions)) {
6217 Args.AddLastArg(CmdArgs, options::OPT_finstrument_functions,
6218 options::OPT_finstrument_functions_after_inlining,
6219 options::OPT_finstrument_function_entry_bare);
6227 Args.AddLastArg(CmdArgs, options::OPT_fclang_abi_compat_EQ);
6230 Args.hasArg(options::OPT_fsample_profile_use_profi)) {
6237 !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) {
6242 // Pass options for controlling the default header search paths.
6243 if (Args.hasArg(options::OPT_nostdinc)) {
6247 if (Args.hasArg(options::OPT_nostdlibinc))
6249 Args.AddLastArg(CmdArgs, options::OPT_nostdincxx);
6250 Args.AddLastArg(CmdArgs, options::OPT_nobuiltininc);
6257 Args.AddLastArg(CmdArgs, options::OPT_working_directory);
6261 // Add preprocessing options like -I, -D, etc. if we are using the
6270 // When building with ccache, it will pass -D options to clang even on
6272 Args.ClaimAllArgs(options::OPT_D);
6275 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
6276 if (A->getOption().matches(options::OPT_O4)) {
6284 // Warn about ignored options to clang.
6286 Args.filtered(options::OPT_clang_ignored_gcc_optimization_f_Group)) {
6292 Args.filtered(options::OPT_clang_ignored_legacy_options_Group)) {
6299 Args.AddAllArgs(CmdArgs, options::OPT_R_Group);
6302 Args.filtered(options::OPT_W_Group, options::OPT__SLASH_wd)) {
6304 if (A->getOption().getID() == options::OPT__SLASH_wd) {
6321 Args.AddAllArgs(CmdArgs, options::OPT_Wsystem_headers_in_module_EQ);
6323 if (Args.hasFlag(options::OPT_pedantic, options::OPT_no_pedantic, false))
6325 Args.AddLastArg(CmdArgs, options::OPT_pedantic_errors);
6326 Args.AddLastArg(CmdArgs, options::OPT_w);
6328 Args.addOptInFlag(CmdArgs, options::OPT_ffixed_point,
6329 options::OPT_fno_fixed_point);
6331 if (Arg *A = Args.getLastArg(options::OPT_fcxx_abi_EQ))
6334 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_relative_cxx_abi_vtables,
6335 options::OPT_fno_experimental_relative_cxx_abi_vtables);
6337 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_omit_vtable_rtti,
6338 options::OPT_fno_experimental_omit_vtable_rtti);
6340 if (Arg *A = Args.getLastArg(options::OPT_ffuchsia_api_level_EQ))
6350 const Arg *Std = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi);
6352 if (Std->getOption().matches(options::OPT_ansi))
6361 if (Arg *A = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi,
6362 options::OPT_ftrigraphs,
6363 options::OPT_fno_trigraphs))
6374 if (!Args.hasArg(options::OPT__SLASH_std)) {
6375 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ, "-std=",
6383 Args.AddLastArg(CmdArgs, options::OPT_ftrigraphs,
6384 options::OPT_fno_trigraphs);
6400 Args.getLastArg(options::OPT_Wwrite_strings,
6401 options::OPT_Wno_write_strings, options::OPT_w);
6403 WriteStrings->getOption().matches(options::OPT_Wwrite_strings))
6411 Args.hasFlag(options::OPT_Wdeprecated, options::OPT_Wno_deprecated,
6417 if (Arg *Asm = Args.getLastArg(options::OPT_fasm, options::OPT_fno_asm)) {
6418 if (Asm->getOption().matches(options::OPT_fasm))
6427 Args.AddLastArg(CmdArgs, options::OPT_ftemplate_depth_EQ);
6428 Args.AddLastArg(CmdArgs, options::OPT_foperator_arrow_depth_EQ);
6429 Args.AddLastArg(CmdArgs, options::OPT_fconstexpr_depth_EQ);
6430 Args.AddLastArg(CmdArgs, options::OPT_fconstexpr_steps_EQ);
6432 Args.AddLastArg(CmdArgs, options::OPT_fexperimental_library);
6434 if (Args.hasArg(options::OPT_fexperimental_new_constant_interpreter))
6437 if (Arg *A = Args.getLastArg(options::OPT_fbracket_depth_EQ)) {
6442 if (Arg *A = Args.getLastArg(options::OPT_Wlarge_by_value_copy_EQ,
6443 options::OPT_Wlarge_by_value_copy_def)) {
6451 if (Args.hasArg(options::OPT_relocatable_pch))
6454 if (const Arg *A = Args.getLastArg(options::OPT_fcf_runtime_abi_EQ)) {
6465 if (Arg *A = Args.getLastArg(options::OPT_fconstant_string_class_EQ)) {
6470 if (Arg *A = Args.getLastArg(options::OPT_ftabstop_EQ)) {
6475 Args.addOptInFlag(CmdArgs, options::OPT_fstack_size_section,
6476 options::OPT_fno_stack_size_section);
6478 if (Args.hasArg(options::OPT_fstack_usage)) {
6481 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) {
6491 if (Arg *A = Args.getLastArg(options::OPT_ferror_limit_EQ))
6496 Args.AddLastArg(CmdArgs, options::OPT_fconstexpr_backtrace_limit_EQ);
6497 Args.AddLastArg(CmdArgs, options::OPT_fmacro_backtrace_limit_EQ);
6498 Args.AddLastArg(CmdArgs, options::OPT_ftemplate_backtrace_limit_EQ);
6499 Args.AddLastArg(CmdArgs, options::OPT_fspell_checking_limit_EQ);
6500 Args.AddLastArg(CmdArgs, options::OPT_fcaret_diagnostics_max_lines_EQ);
6504 if (Arg *A = Args.getLastArg(options::OPT_fmessage_length_EQ)) {
6518 if (Arg *A = Args.getLastArg(options::OPT_frandomize_layout_seed_EQ))
6522 if (Arg *A = Args.getLastArg(options::OPT_frandomize_layout_seed_file_EQ))
6527 if (const Arg *A = Args.getLastArg(options::OPT_fvisibility_EQ,
6528 options::OPT_fvisibility_ms_compat)) {
6529 if (A->getOption().matches(options::OPT_fvisibility_EQ)) {
6532 assert(A->getOption().matches(options::OPT_fvisibility_ms_compat));
6543 // PS4/PS5 process these options in addClangTargetOptions.
6546 Args.getLastArg(options::OPT_fvisibility_from_dllstorageclass,
6547 options::OPT_fno_visibility_from_dllstorageclass)) {
6549 options::OPT_fvisibility_from_dllstorageclass)) {
6551 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_dllexport_EQ);
6552 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_nodllstorageclass_EQ);
6553 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_externs_dllimport_EQ);
6555 options::OPT_fvisibility_externs_nodllstorageclass_EQ);
6560 if (Args.hasFlag(options::OPT_fvisibility_inlines_hidden,
6561 options::OPT_fno_visibility_inlines_hidden, false))
6564 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_inlines_hidden_static_local_var,
6565 options::OPT_fno_visibility_inlines_hidden_static_local_var);
6570 Args.getLastArg(options::OPT_fvisibility_global_new_delete_hidden)) {
6577 Args.getLastArg(options::OPT_fvisibility_global_new_delete_EQ,
6578 options::OPT_fvisibility_global_new_delete_hidden)) {
6579 if (A->getOption().matches(options::OPT_fvisibility_global_new_delete_EQ)) {
6583 options::OPT_fvisibility_global_new_delete_hidden));
6588 Args.AddLastArg(CmdArgs, options::OPT_ftlsmodel_EQ);
6590 if (Args.hasFlag(options::OPT_fnew_infallible,
6591 options::OPT_fno_new_infallible, false))
6594 if (Args.hasFlag(options::OPT_fno_operator_names,
6595 options::OPT_foperator_names, false))
6598 // Forward -f (flag) options which we can pass directly.
6599 Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls);
6600 Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions);
6601 Args.AddLastArg(CmdArgs, options::OPT_fdigraphs, options::OPT_fno_digraphs);
6602 Args.AddLastArg(CmdArgs, options::OPT_fzero_call_used_regs_EQ);
6603 Args.AddLastArg(CmdArgs, options::OPT_fraw_string_literals,
6604 options::OPT_fno_raw_string_literals);
6606 if (Args.hasFlag(options::OPT_femulated_tls, options::OPT_fno_emulated_tls,
6610 Args.addOptInFlag(CmdArgs, options::OPT_fcheck_new,
6611 options::OPT_fno_check_new);
6613 if (Arg *A = Args.getLastArg(options::OPT_fzero_call_used_regs_EQ)) {
6624 Args.AddLastArg(CmdArgs, options::OPT_fzvector);
6626 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_show_template_tree);
6627 Args.AddLastArg(CmdArgs, options::OPT_fno_elide_type);
6631 if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
6632 options::OPT_fno_openmp, false) &&
6643 // options and pass the right information to the frontend.
6644 if (!Args.hasFlag(options::OPT_fopenmp_use_tls,
6645 options::OPT_fnoopenmp_use_tls, /*Default=*/true))
6647 Args.AddLastArg(CmdArgs, options::OPT_fopenmp_simd,
6648 options::OPT_fno_openmp_simd);
6649 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_enable_irbuilder);
6650 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_version_EQ);
6651 if (!Args.hasFlag(options::OPT_fopenmp_extensions,
6652 options::OPT_fno_openmp_extensions, /*Default=*/true))
6654 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_cuda_number_of_sm_EQ);
6655 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_cuda_blocks_per_sm_EQ);
6657 options::OPT_fopenmp_cuda_teams_reduction_recs_num_EQ);
6658 if (Args.hasFlag(options::OPT_fopenmp_optimistic_collapse,
6659 options::OPT_fno_openmp_optimistic_collapse,
6665 if (Args.hasFlag(options::OPT_fopenmp_cuda_mode,
6666 options::OPT_fno_openmp_cuda_mode, /*Default=*/false))
6670 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_target_debug_EQ);
6671 if (Args.hasFlag(options::OPT_fopenmp_target_debug,
6672 options::OPT_fno_openmp_target_debug, /*Default=*/false))
6677 if (Args.hasFlag(options::OPT_fopenmp_assume_teams_oversubscription,
6678 options::OPT_fno_openmp_assume_teams_oversubscription,
6681 if (Args.hasFlag(options::OPT_fopenmp_assume_threads_oversubscription,
6682 options::OPT_fno_openmp_assume_threads_oversubscription,
6685 if (Args.hasArg(options::OPT_fopenmp_assume_no_thread_state))
6687 if (Args.hasArg(options::OPT_fopenmp_assume_no_nested_parallelism))
6689 if (Args.hasArg(options::OPT_fopenmp_offload_mandatory))
6691 if (Args.hasArg(options::OPT_fopenmp_force_usm))
6704 Args.AddLastArg(CmdArgs, options::OPT_fopenmp_simd,
6705 options::OPT_fno_openmp_simd);
6706 Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_version_EQ);
6707 Args.addOptOutFlag(CmdArgs, options::OPT_fopenmp_extensions,
6708 options::OPT_fno_openmp_extensions);
6712 if (Args.hasFlag(options::OPT_offload_new_driver,
6713 options::OPT_no_offload_new_driver, false))
6722 Args.getAllArgValues(options::OPT_fprofile_list_EQ)) {
6729 if (Arg *A = Args.getLastArg(options::OPT_fpatchable_function_entry_EQ)) {
6752 Args.AddLastArg(CmdArgs, options::OPT_fms_hotpatch);
6755 Args.AddLastArg(CmdArgs, options::OPT_pg);
6758 if (Arg *A = Args.getLastArg(options::OPT_mfentry)) {
6765 if (Arg *A = Args.getLastArg(options::OPT_mnop_mcount)) {
6772 if (Arg *A = Args.getLastArg(options::OPT_mrecord_mcount)) {
6781 if (Arg *A = Args.getLastArgNoClaim(options::OPT_pg)) {
6787 if (Arg *A = Args.getLastArgNoClaim(options::OPT_p)) {
6793 if (Arg *A = Args.getLastArgNoClaim(options::OPT_p, options::OPT_pg)) {
6794 if (A->getOption().matches(options::OPT_p)) {
6796 if (TC.getTriple().isOSAIX() && !Args.hasArgNoClaim(options::OPT_pg))
6801 // Reject AIX-specific link options on other targets.
6803 for (const Arg *A : Args.filtered(options::OPT_b, options::OPT_K,
6804 options::OPT_mxcoff_build_id_EQ)) {
6810 if (Args.getLastArg(options::OPT_fapple_kext) ||
6811 (Args.hasArg(options::OPT_mkernel) && types::isCXX(InputType)))
6814 Args.AddLastArg(CmdArgs, options::OPT_altivec_src_compat);
6815 Args.AddLastArg(CmdArgs, options::OPT_flax_vector_conversions_EQ);
6816 Args.AddLastArg(CmdArgs, options::OPT_fobjc_sender_dependent_dispatch);
6817 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info);
6818 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_parseable_fixits);
6819 Args.AddLastArg(CmdArgs, options::OPT_ftime_report);
6820 Args.AddLastArg(CmdArgs, options::OPT_ftime_report_EQ);
6821 Args.AddLastArg(CmdArgs, options::OPT_ftrapv);
6822 Args.AddLastArg(CmdArgs, options::OPT_malign_double);
6823 Args.AddLastArg(CmdArgs, options::OPT_fno_temp_file);
6827 Args.AddLastArg(CmdArgs, options::OPT_ftime_trace_granularity_EQ);
6828 Args.AddLastArg(CmdArgs, options::OPT_ftime_trace_verbose);
6831 if (Arg *A = Args.getLastArg(options::OPT_ftrapv_handler_EQ)) {
6836 Args.AddLastArg(CmdArgs, options::OPT_ftrap_function_EQ);
6840 if (Arg *A = Args.getLastArg(options::OPT_fwrapv, options::OPT_fno_wrapv)) {
6841 if (A->getOption().matches(options::OPT_fwrapv))
6843 } else if (Arg *A = Args.getLastArg(options::OPT_fstrict_overflow,
6844 options::OPT_fno_strict_overflow)) {
6845 if (A->getOption().matches(options::OPT_fno_strict_overflow))
6849 Args.AddLastArg(CmdArgs, options::OPT_ffinite_loops,
6850 options::OPT_fno_finite_loops);
6852 Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings);
6853 Args.AddLastArg(CmdArgs, options::OPT_funroll_loops,
6854 options::OPT_fno_unroll_loops);
6856 Args.AddLastArg(CmdArgs, options::OPT_fstrict_flex_arrays_EQ);
6858 Args.AddLastArg(CmdArgs, options::OPT_pthread);
6860 Args.addOptInFlag(CmdArgs, options::OPT_mspeculative_load_hardening,
6861 options::OPT_mno_speculative_load_hardening);
6867 Args.AddLastArg(CmdArgs, options::OPT_fswift_async_fp_EQ);
6869 Args.addOptInFlag(CmdArgs, options::OPT_mstackrealign,
6870 options::OPT_mno_stackrealign);
6872 if (Args.hasArg(options::OPT_mstack_alignment)) {
6873 StringRef alignment = Args.getLastArgValue(options::OPT_mstack_alignment);
6877 if (Args.hasArg(options::OPT_mstack_probe_size)) {
6878 StringRef Size = Args.getLastArgValue(options::OPT_mstack_probe_size);
6886 Args.addOptOutFlag(CmdArgs, options::OPT_mstack_arg_probe,
6887 options::OPT_mno_stack_arg_probe);
6889 if (Arg *A = Args.getLastArg(options::OPT_mrestrict_it,
6890 options::OPT_mno_restrict_it)) {
6891 if (A->getOption().matches(options::OPT_mrestrict_it)) {
6900 // Forward -cl options to -cc1
6903 // Forward hlsl options to -cc1
6906 // Forward OpenACC options to -cc1
6910 if (Args.hasFlag(options::OPT_fhip_new_launch_api,
6911 options::OPT_fno_hip_new_launch_api, true))
6913 Args.addOptInFlag(CmdArgs, options::OPT_fgpu_allow_device_init,
6914 options::OPT_fno_gpu_allow_device_init);
6915 Args.AddLastArg(CmdArgs, options::OPT_hipstdpar);
6916 Args.AddLastArg(CmdArgs, options::OPT_hipstdpar_interpose_alloc);
6917 Args.addOptInFlag(CmdArgs, options::OPT_fhip_kernel_arg_name,
6918 options::OPT_fno_hip_kernel_arg_name);
6924 Args.addOptInFlag(CmdArgs, options::OPT_fgpu_defer_diag,
6925 options::OPT_fno_gpu_defer_diag);
6926 if (Args.hasFlag(options::OPT_fgpu_exclude_wrong_side_overloads,
6927 options::OPT_fno_gpu_exclude_wrong_side_overloads,
6935 if (Args.hasArg(options::OPT_nogpulib))
6938 if (Arg *A = Args.getLastArg(options::OPT_fcf_protection_EQ)) {
6943 if (Arg *A = Args.getLastArg(options::OPT_mfunction_return_EQ))
6947 Args.AddLastArg(CmdArgs, options::OPT_mindirect_branch_cs_prefix);
6949 // Forward -f options with positive and negative forms; we translate these by
6950 // hand. Do not propagate PGO options to the GPU-side compilations as the
6955 options::OPT_fprofile_generate, options::OPT_fprofile_generate_EQ,
6956 options::OPT_fcs_profile_generate,
6957 options::OPT_fcs_profile_generate_EQ, options::OPT_fprofile_use,
6958 options::OPT_fprofile_use_EQ);
6961 << "SampleUse with PGO options";
6969 Args.AddLastArg(CmdArgs, options::OPT_fprofile_remapping_file_EQ);
6971 if (Args.hasFlag(options::OPT_fpseudo_probe_for_profiling,
6972 options::OPT_fno_pseudo_probe_for_profiling, false)) {
6976 if (Args.hasFlag(options::OPT_funique_internal_linkage_names,
6977 options::OPT_fno_unique_internal_linkage_names, true))
6983 Args.addOptOutFlag(CmdArgs, options::OPT_fassume_sane_operator_new,
6984 options::OPT_fno_assume_sane_operator_new);
6986 if (Args.hasFlag(options::OPT_fapinotes, options::OPT_fno_apinotes, false))
6988 if (Args.hasFlag(options::OPT_fapinotes_modules,
6989 options::OPT_fno_apinotes_modules, false))
6991 Args.AddLastArg(CmdArgs, options::OPT_fapinotes_swift_version);
6994 if (Args.hasFlag(options::OPT_fblocks, options::OPT_fno_blocks,
6996 (Args.hasArg(options::OPT_fgnu_runtime) &&
6997 Args.hasArg(options::OPT_fobjc_nonfragile_abi) &&
6998 !Args.hasArg(options::OPT_fno_blocks))) {
7001 if (!Args.hasArg(options::OPT_fgnu_runtime) && !TC.hasBlocksRuntime())
7009 if (Args.hasFlag(options::OPT_fcoro_aligned_allocation,
7010 options::OPT_fno_coro_aligned_allocation, false) &&
7014 Args.AddLastArg(CmdArgs, options::OPT_fdouble_square_bracket_attributes,
7015 options::OPT_fno_double_square_bracket_attributes);
7017 Args.addOptOutFlag(CmdArgs, options::OPT_faccess_control,
7018 options::OPT_fno_access_control);
7019 Args.addOptOutFlag(CmdArgs, options::OPT_felide_constructors,
7020 options::OPT_fno_elide_constructors);
7029 if (Args.hasFlag(options::OPT_fshort_enums, options::OPT_fno_short_enums,
7037 options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit,
7044 if (Args.hasFlag(options::OPT_fregister_global_dtors_with_atexit,
7045 options::OPT_fno_register_global_dtors_with_atexit,
7049 Args.addOptInFlag(CmdArgs, options::OPT_fuse_line_directives,
7050 options::OPT_fno_use_line_directives);
7053 if (Args.hasFlag(options::OPT_fminimize_whitespace,
7054 options::OPT_fno_minimize_whitespace, false)) {
7063 if (Args.hasFlag(options::OPT_fkeep_system_includes,
7064 options::OPT_fno_keep_system_includes, false)) {
7073 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions,
7079 options::OPT_fms_compatibility, options::OPT_fno_ms_compatibility,
7080 (IsWindowsMSVC && Args.hasFlag(options::OPT_fms_extensions,
7081 options::OPT_fno_ms_extensions, true)));
7085 Args.hasArg(options::OPT_fms_define_stdc))
7090 Args.hasArg(options::OPT_fms_runtime_lib_EQ))
7095 if (Arg *A = Args.getLastArg(options::OPT_fgnuc_version_EQ)) {
7124 if (const Arg *StdArg = Args.getLastArg(options::OPT__SLASH_std)) {
7138 if (const Arg *StdArg = Args.getLastArg(options::OPT__SLASH_std)) {
7162 Args.addOptInFlag(CmdArgs, options::OPT_fborland_extensions,
7163 options::OPT_fno_borland_extensions);
7166 if (Args.hasFlag(options::OPT_fdeclspec, options::OPT_fno_declspec,
7169 else if (Args.hasArg(options::OPT_fno_declspec))
7174 if (!Args.hasFlag(options::OPT_fthreadsafe_statics,
7175 options::OPT_fno_threadsafe_statics,
7181 if (!Args.hasFlag(options::OPT_fassumptions, options::OPT_fno_assumptions,
7187 Args.AddLastArg(CmdArgs, options::OPT_fgnu_keywords,
7188 options::OPT_fno_gnu_keywords);
7190 Args.addOptInFlag(CmdArgs, options::OPT_fgnu89_inline,
7191 options::OPT_fno_gnu89_inline);
7193 const Arg *InlineArg = Args.getLastArg(options::OPT_finline_functions,
7194 options::OPT_finline_hint_functions,
7195 options::OPT_fno_inline_functions);
7196 if (Arg *A = Args.getLastArg(options::OPT_finline, options::OPT_fno_inline)) {
7197 if (A->getOption().matches(options::OPT_fno_inline))
7203 Args.AddLastArg(CmdArgs, options::OPT_finline_max_stacksize_EQ);
7229 if (Args.hasFlag(options::OPT_fdelayed_template_parsing,
7230 options::OPT_fno_delayed_template_parsing,
7238 if (Args.hasFlag(options::OPT_fpch_validate_input_files_content,
7239 options::OPT_fno_pch_validate_input_files_content, false))
7241 if (Args.hasFlag(options::OPT_fpch_instantiate_templates,
7242 options::OPT_fno_pch_instantiate_templates, false))
7244 if (Args.hasFlag(options::OPT_fpch_codegen, options::OPT_fno_pch_codegen,
7247 if (Args.hasFlag(options::OPT_fpch_debuginfo, options::OPT_fno_pch_debuginfo,
7256 Args.hasFlag(options::OPT_fobjc_encode_cxx_class_template_spec,
7257 options::OPT_fno_objc_encode_cxx_class_template_spec,
7261 if (Args.hasFlag(options::OPT_fapplication_extension,
7262 options::OPT_fno_application_extension, false))
7272 options::OPT_fsjlj_exceptions, options::OPT_fseh_exceptions,
7273 options::OPT_fdwarf_exceptions, options::OPT_fwasm_exceptions);
7276 if (Opt.matches(options::OPT_fsjlj_exceptions))
7278 if (Opt.matches(options::OPT_fseh_exceptions))
7280 if (Opt.matches(options::OPT_fdwarf_exceptions))
7282 if (Opt.matches(options::OPT_fwasm_exceptions))
7301 Args.addOptOutFlag(CmdArgs, options::OPT_fassume_sane_operator_new,
7302 options::OPT_fno_assume_sane_operator_new);
7305 Args.addOptOutFlag(CmdArgs, options::OPT_fassume_unique_vtables,
7306 options::OPT_fno_assume_unique_vtables);
7310 Args.getLastArg(options::OPT_frelaxed_template_template_args,
7311 options::OPT_fno_relaxed_template_template_args)) {
7313 options::OPT_fno_relaxed_template_template_args)) {
7324 Args.addLastArg(CmdArgs, options::OPT_fsized_deallocation,
7325 options::OPT_fno_sized_deallocation);
7329 if (Arg *A = Args.getLastArg(options::OPT_faligned_allocation,
7330 options::OPT_fno_aligned_allocation,
7331 options::OPT_faligned_new_EQ)) {
7332 if (A->getOption().matches(options::OPT_fno_aligned_allocation))
7340 if (Arg *A = Args.getLastArg(options::OPT_fnew_alignment_EQ,
7341 options::OPT_faligned_new_EQ))
7347 if (!Args.hasFlag(options::OPT_fconstant_cfstrings,
7348 options::OPT_fno_constant_cfstrings, true) ||
7349 !Args.hasFlag(options::OPT_mconstant_cfstrings,
7350 options::OPT_mno_constant_cfstrings, true))
7353 Args.addOptInFlag(CmdArgs, options::OPT_fpascal_strings,
7354 options::OPT_fno_pascal_strings);
7358 if (Arg *A = Args.getLastArg(options::OPT_fpack_struct_EQ)) {
7362 } else if (Args.hasFlag(options::OPT_fpack_struct,
7363 options::OPT_fno_pack_struct, false)) {
7368 bool SkipMaxTypeAlign = Args.hasArg(options::OPT_fno_max_type_align);
7369 if (Arg *A = Args.getLastArg(options::OPT_fmax_type_align_EQ)) {
7382 if (!Args.hasFlag(options::OPT_Qy, options::OPT_Qn, true))
7386 Args.addOptInFlag(CmdArgs, options::OPT_fcommon, options::OPT_fno_common);
7390 if (!Args.hasFlag(options::OPT_fsigned_bitfields,
7391 options::OPT_funsigned_bitfields, true))
7393 << Args.getLastArg(options::OPT_funsigned_bitfields)->getAsString(Args);
7396 if (!Args.hasFlag(options::OPT_ffor_scope, options::OPT_fno_for_scope, true))
7398 << Args.getLastArg(options::OPT_fno_for_scope)->getAsString(Args);
7401 if (Arg *inputCharset = Args.getLastArg(options::OPT_finput_charset_EQ)) {
7409 if (Arg *execCharset = Args.getLastArg(options::OPT_fexec_charset_EQ)) {
7418 Args.addOptInFlag(CmdArgs, options::OPT_fasm_blocks,
7419 options::OPT_fno_asm_blocks);
7421 Args.addOptOutFlag(CmdArgs, options::OPT_fgnu_inline_asm,
7422 options::OPT_fno_gnu_inline_asm);
7429 EnableVec ? options::OPT_O_Group : options::OPT_fvectorize;
7430 if (Args.hasFlag(options::OPT_fvectorize, VectorizeAliasOption,
7431 options::OPT_fno_vectorize, EnableVec))
7437 EnableSLPVec ? options::OPT_O_Group : options::OPT_fslp_vectorize;
7438 if (Args.hasFlag(options::OPT_fslp_vectorize, SLPVectAliasOption,
7439 options::OPT_fno_slp_vectorize, EnableSLPVec))
7444 Args.AddLastArg(CmdArgs, options::OPT_fshow_overloads_EQ);
7446 options::OPT_fsanitize_undefined_strip_path_components_EQ);
7450 if (Arg *A = Args.getLastArg(options::OPT_fdollars_in_identifiers,
7451 options::OPT_fno_dollars_in_identifiers)) {
7452 if (A->getOption().matches(options::OPT_fdollars_in_identifiers))
7458 Args.addOptInFlag(CmdArgs, options::OPT_fapple_pragma_pack,
7459 options::OPT_fno_apple_pragma_pack);
7465 bool RewriteImports = Args.hasFlag(options::OPT_frewrite_imports,
7466 options::OPT_fno_rewrite_imports, false);
7470 Args.addOptInFlag(CmdArgs, options::OPT_fdirectives_only,
7471 options::OPT_fno_directives_only);
7477 if (Args.hasFlag(options::OPT_frewrite_includes,
7478 options::OPT_fno_rewrite_includes, false) ||
7483 if (Arg *A = Args.getLastArg(options::OPT_traditional,
7484 options::OPT_traditional_cpp)) {
7491 Args.AddLastArg(CmdArgs, options::OPT_dM);
7492 Args.AddLastArg(CmdArgs, options::OPT_dD);
7493 Args.AddLastArg(CmdArgs, options::OPT_dI);
7495 Args.AddLastArg(CmdArgs, options::OPT_fmax_tokens_EQ);
7498 if (Arg *A = Args.getLastArg(options::OPT__serialize_diags)) {
7503 if (Args.hasArg(options::OPT_fretain_comments_from_system_headers))
7507 Args.AddAllArgs(CmdArgs, options::OPT_fcomment_block_commands);
7509 Args.AddAllArgs(CmdArgs, options::OPT_fparse_all_comments);
7512 for (const Arg *A : Args.filtered(options::OPT_fplugin_EQ)) {
7526 for (const Arg *A : Args.filtered(options::OPT_fplugin_arg)) {
7548 for (const Arg *A : Args.filtered(options::OPT_fpass_plugin_EQ)) {
7555 for (const Arg *A : Args.filtered(options::OPT_vfsoverlay)) {
7561 Args.addOptInFlag(CmdArgs, options::OPT_fsafe_buffer_usage_suggestions,
7562 options::OPT_fno_safe_buffer_usage_suggestions);
7564 Args.addOptInFlag(CmdArgs, options::OPT_fexperimental_late_parse_attributes,
7565 options::OPT_fno_experimental_late_parse_attributes);
7577 for (auto Arg : Args.filtered(options::OPT_Xclang)) {
7588 for (const Arg *A : Args.filtered(options::OPT_mllvm)) {
7615 Args.AddAllArgs(CmdArgs, options::OPT_undef);
7622 // -grecord-gcc-switches options is set on.
7625 Args.hasFlag(options::OPT_grecord_command_line,
7626 options::OPT_gno_record_command_line, false);
7628 Args.hasFlag(options::OPT_frecord_command_line,
7629 options::OPT_fno_record_command_line, false);
7633 << Args.getLastArg(options::OPT_frecord_command_line)->getAsString(Args)
7678 if (Args.hasFlag(options::OPT_fcuda_short_ptr,
7679 options::OPT_fno_cuda_short_ptr, false))
7697 options::OPT_ffast_math, options::OPT_fno_fast_math, false);
7698 if (Args.hasFlag(options::OPT_fgpu_approx_transcendentals,
7699 options::OPT_fno_gpu_approx_transcendentals,
7703 Args.claimAllArgs(options::OPT_fgpu_approx_transcendentals,
7704 options::OPT_fno_gpu_approx_transcendentals);
7709 Args.AddLastArg(CmdArgs, options::OPT_fgpu_default_stream_EQ);
7712 Args.AddLastArg(CmdArgs, options::OPT_foffload_uniform_block,
7713 options::OPT_fno_offload_uniform_block);
7715 Args.AddLastArg(CmdArgs, options::OPT_foffload_implicit_host_device_templates,
7716 options::OPT_fno_offload_implicit_host_device_templates);
7720 Args.getLastArgValue(options::OPT_fgpu_inline_threshold_EQ);
7730 options::OPT_fhip_fp32_correctly_rounded_divide_sqrt,
7731 options::OPT_fno_hip_fp32_correctly_rounded_divide_sqrt);
7749 Args.addOptInFlag(CmdArgs, options::OPT_munsafe_fp_atomics,
7750 options::OPT_mno_unsafe_fp_atomics);
7751 Args.addOptOutFlag(CmdArgs, options::OPT_mamdgpu_ieee,
7752 options::OPT_mno_amdgpu_ieee);
7768 Args.hasFlag(options::OPT_fvirtual_function_elimination,
7769 options::OPT_fno_virtual_function_elimination, false);
7783 options::OPT_fwhole_program_vtables,
7784 options::OPT_fno_whole_program_vtables, VirtualFunctionElimination);
7796 // Check if we passed LTO options but they were suppressed because this is a
7797 // device offloading action, or we passed device offload LTO options which
7817 Args.hasFlag(options::OPT_fsplit_lto_unit,
7818 options::OPT_fno_split_lto_unit, DefaultsSplitLTOUnit);
7825 if (Arg *A = Args.getLastArg(options::OPT_ffat_lto_objects,
7826 options::OPT_fno_fat_lto_objects)) {
7827 if (IsUsingLTO && A->getOption().matches(options::OPT_ffat_lto_objects)) {
7841 if (Arg *A = Args.getLastArg(options::OPT_fglobal_isel,
7842 options::OPT_fno_global_isel)) {
7844 if (A->getOption().matches(options::OPT_fglobal_isel)) {
7853 Arg *A = Args.getLastArg(options::OPT_O_Group);
7855 if (!A || A->getOption().matches(options::OPT_O0))
7872 if (Args.hasArg(options::OPT_forder_file_instrumentation)) {
7883 if (Arg *A = Args.getLastArg(options::OPT_fforce_enable_int128,
7884 options::OPT_fno_force_enable_int128)) {
7885 if (A->getOption().matches(options::OPT_fforce_enable_int128))
7889 Args.addOptInFlag(CmdArgs, options::OPT_fkeep_static_consts,
7890 options::OPT_fno_keep_static_consts);
7891 Args.addOptInFlag(CmdArgs, options::OPT_fkeep_persistent_storage_variables,
7892 options::OPT_fno_keep_persistent_storage_variables);
7893 Args.addOptInFlag(CmdArgs, options::OPT_fcomplete_member_pointers,
7894 options::OPT_fno_complete_member_pointers);
7895 Args.addOptOutFlag(CmdArgs, options::OPT_fcxx_static_destructors,
7896 options::OPT_fno_cxx_static_destructors);
7903 (Args.hasArg(options::OPT_mno_fmv) ||
7911 if (Args.hasFlag(options::OPT_faddrsig, options::OPT_fno_addrsig,
7925 if (Arg *A = Args.getLastArg(options::OPT_fsymbol_partition_EQ)) {
7980 Args.hasFlag(options::OPT__SLASH_showFilenames,
7981 options::OPT__SLASH_showFilenames_, false)) {
7985 if (Arg *A = Args.getLastArg(options::OPT_pg))
7987 !Args.hasArg(options::OPT_mfentry))
7995 Args.ClaimAllArgs(options::OPT_fpch_preprocess);
7999 Args.ClaimAllArgs(options::OPT_clang_ignored_f_Group);
8000 Args.ClaimAllArgs(options::OPT_clang_ignored_m_Group);
8003 Args.ClaimAllArgs(options::OPT_emit_llvm);
8014 /// Add options related to the Objective-C runtime/ABI.
8023 args.getLastArg(options::OPT_fnext_runtime, options::OPT_fgnu_runtime,
8024 options::OPT_fobjc_runtime_EQ);
8027 // options about fragility.
8029 runtimeArg->getOption().matches(options::OPT_fobjc_runtime_EQ)) {
8056 if (Arg *abiArg = args.getLastArg(options::OPT_fobjc_abi_version_EQ)) {
8072 if (args.hasFlag(options::OPT_fobjc_nonfragile_abi,
8073 options::OPT_fno_objc_nonfragile_abi,
8083 args.getLastArg(options::OPT_fobjc_nonfragile_abi_version_EQ)) {
8121 } else if (runtimeArg->getOption().matches(options::OPT_fnext_runtime)) {
8133 assert(runtimeArg->getOption().matches(options::OPT_fgnu_runtime));
8176 Args.getAllArgValues(options::OPT__SLASH_EH);
8210 Args.hasFlag(options::OPT__SLASH_GX, options::OPT__SLASH_GX_,
8216 if (Args.hasArg(options::OPT__SLASH_kernel)) {
8232 Args.getLastArg(options::OPT__SLASH_showIncludes,
8233 options::OPT__SLASH_showIncludes_user)) {
8235 if (ShowIncludes->getOption().matches(options::OPT__SLASH_showIncludes))
8240 if (Args.hasFlag(options::OPT__SLASH_GR_, options::OPT__SLASH_GR,
8246 if (!isNVPTX && Args.hasFlag(options::OPT__SLASH_GS, options::OPT__SLASH_GS_,
8267 if (Args.hasArg(options::OPT__SLASH_EP)) {
8272 if (Args.hasFlag(options::OPT__SLASH_Zc_dllexportInlines_,
8273 options::OPT__SLASH_Zc_dllexportInlines,
8278 if (Args.hasFlag(options::OPT__SLASH_Zc_wchar_t_,
8279 options::OPT__SLASH_Zc_wchar_t, false)) {
8283 if (Args.hasArg(options::OPT__SLASH_kernel)) {
8286 Args.getAllArgValues(options::OPT__SLASH_arch);
8299 if (Args.hasFlag(options::OPT__SLASH_GR, options::OPT__SLASH_GR_, false))
8304 Arg *MostGeneralArg = Args.getLastArg(options::OPT__SLASH_vmg);
8305 Arg *BestCaseArg = Args.getLastArg(options::OPT__SLASH_vmb);
8311 Arg *SingleArg = Args.getLastArg(options::OPT__SLASH_vms);
8312 Arg *MultipleArg = Args.getLastArg(options::OPT__SLASH_vmm);
8313 Arg *VirtualArg = Args.getLastArg(options::OPT__SLASH_vmv);
8330 if (Args.hasArg(options::OPT_regcall4))
8333 // Parse the default calling convention options.
8335 Args.getLastArg(options::OPT__SLASH_Gd, options::OPT__SLASH_Gr,
8336 options::OPT__SLASH_Gz, options::OPT__SLASH_Gv,
8337 options::OPT__SLASH_Gregcall)) {
8343 case options::OPT__SLASH_Gd:
8346 case options::OPT__SLASH_Gr:
8350 case options::OPT__SLASH_Gz:
8354 case options::OPT__SLASH_Gv:
8358 case options::OPT__SLASH_Gregcall:
8369 if (Args.hasArg(options::OPT__SLASH_Gregcall4))
8372 Args.AddLastArg(CmdArgs, options::OPT_vtordisp_mode_EQ);
8374 if (!Args.hasArg(options::OPT_fdiagnostics_format_EQ)) {
8379 if (Args.hasArg(options::OPT__SLASH_kernel))
8382 for (const Arg *A : Args.filtered(options::OPT__SLASH_guard)) {
8384 // The only valid options are "cf", "cf,nochecks", "cf-", "ehcont" and
8424 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) {
8451 if (Arg *A = Args.getLastArg(options::OPT_masm_EQ)) {
8479 if (Args.hasFlag(options::OPT_mdefault_build_attributes,
8480 options::OPT_mno_default_build_attributes, true)) {
8500 Args.ClaimAllArgs(options::OPT_w);
8502 Args.ClaimAllArgs(options::OPT_emit_llvm);
8538 (void)Args.hasArg(options::OPT_force__cpusubtype__ALL);
8540 // Pass along any -I options so we get proper .include search paths.
8541 Args.AddAllArgs(CmdArgs, options::OPT_I_Group);
8543 // Pass along any --embed-dir or similar options so we get proper embed paths.
8544 Args.AddAllArgs(CmdArgs, options::OPT_embed_dir_EQ);
8559 Args.ClaimAllArgs(options::OPT_g_Group);
8560 if (Arg *A = Args.getLastArg(options::OPT_g_Group))
8561 WantDebug = !A->getOption().matches(options::OPT_g0) &&
8562 !A->getOption().matches(options::OPT_ggdb0);
8570 if (const Arg *A = Args.getLastArg(options::OPT_gcodeview))
8614 // And pass along -I options
8615 Args.AddAllArgs(CmdArgs, options::OPT_I);
8682 if (Args.hasFlag(options::OPT_mdefault_build_attributes,
8683 options::OPT_mno_default_build_attributes, true)) {
8692 if (Args.hasArg(options::OPT_mmark_bti_property)) {
8709 if (Args.hasFlag(options::OPT_mdefault_build_attributes,
8710 options::OPT_mno_default_build_attributes, true)) {
8722 Args.ClaimAllArgs(options::OPT_W_Group);
8727 Args.AddAllArgs(CmdArgs, options::OPT_mllvm);
8965 if (TCArgs.hasArg(options::OPT_v))
8997 : TCArgs.getLastArgValue(options::OPT_march_EQ);
9063 if (const Arg *A = Args.getLastArg(options::OPT_O_Group)) {
9065 if (A->getOption().matches(options::OPT_O4) ||
9066 A->getOption().matches(options::OPT_Ofast))
9068 else if (A->getOption().matches(options::OPT_O)) {
9074 } else if (A->getOption().matches(options::OPT_O0))
9082 if (Args.hasArg(options::OPT_v))
9085 if (const Arg *A = Args.getLastArg(options::OPT_g_Group)) {
9086 if (!A->getOption().matches(options::OPT_g0))
9092 if (const Arg *A = Args.getLastArg(options::OPT_mcode_object_version_EQ)) {
9098 for (const auto &A : Args.getAllArgValues(options::OPT_Xcuda_ptxas))
9102 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_EQ))
9105 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_missed_EQ))
9108 if (const Arg *A = Args.getLastArg(options::OPT_Rpass_analysis_EQ))
9111 if (Args.getLastArg(options::OPT_save_temps_EQ))
9119 for (Arg *A : Args.filtered(options::OPT_Xoffload_linker)) {
9130 Args.ClaimAllArgs(options::OPT_Xoffload_linker);
9133 if (Args.hasFlag(options::OPT_fopenmp_target_jit,
9134 options::OPT_fno_openmp_target_jit, false))
9138 for (Arg *A : Args.filtered(options::OPT_mllvm)) {