Lines Matching refs:options

50   if (Arg *A = Args.getLastArg(options::OPT_C, options::OPT_CC))
51 if (!Args.hasArg(options::OPT_E) && !D.CCCIsCPP())
60 if (Args.hasArg(options::OPT_static))
61 if (const Arg *A = Args.getLastArg(options::OPT_dynamic,
62 options::OPT_mdynamic_no_pic))
158 Args.AddAllArgValues(CmdArgs, options::OPT_Zlinker_input);
183 // Handle reserved library options.
184 if (A.getOption().matches(options::OPT_Z_reserved_lib_stdcxx)) {
186 } else if (A.getOption().matches(options::OPT_Z_reserved_lib_cckext)) {
199 return Args.hasFlag(options::OPT_fobjc_arc, options::OPT_fno_objc_arc, false);
205 Args.ClaimAllArgs(options::OPT_fobjc_link_runtime);
208 return Args.hasArg(options::OPT_fobjc_link_runtime);
214 if (!(Args.hasArg(options::OPT_fprofile_arcs) ||
215 Args.hasArg(options::OPT_fprofile_generate) ||
216 Args.hasArg(options::OPT_fcreate_profile) ||
217 Args.hasArg(options::OPT_coverage)))
234 !O.hasFlag(options::DriverOption) &&
235 !O.hasFlag(options::LinkerInput);
249 Args.AddLastArg(CmdArgs, options::OPT_C);
250 Args.AddLastArg(CmdArgs, options::OPT_CC);
253 if ((A = Args.getLastArg(options::OPT_M, options::OPT_MM)) ||
254 (A = Args.getLastArg(options::OPT_MD)) ||
255 (A = Args.getLastArg(options::OPT_MMD))) {
258 if (Arg *MF = Args.getLastArg(options::OPT_MF)) {
263 } else if (A->getOption().matches(options::OPT_M) ||
264 A->getOption().matches(options::OPT_MM)) {
274 if (!Args.hasArg(options::OPT_MT) && !Args.hasArg(options::OPT_MQ)) {
279 Arg *OutputOpt = Args.getLastArg(options::OPT_o);
297 if (A->getOption().matches(options::OPT_M) ||
298 A->getOption().matches(options::OPT_MD))
302 if (Args.hasArg(options::OPT_MG)) {
303 if (!A || A->getOption().matches(options::OPT_MD) ||
304 A->getOption().matches(options::OPT_MMD))
309 Args.AddLastArg(CmdArgs, options::OPT_MP);
312 for (arg_iterator it = Args.filtered_begin(options::OPT_MT,
313 options::OPT_MQ),
318 if (A->getOption().matches(options::OPT_MQ)) {
330 // Add -i* options, and automatically translate to
336 for (arg_iterator it = Args.filtered_begin(options::OPT_clang_i_Group),
340 if (A->getOption().matches(options::OPT_include)) {
395 Args.AddAllArgs(CmdArgs, options::OPT_D, options::OPT_U);
396 Args.AddAllArgs(CmdArgs, options::OPT_I_Group, options::OPT_F,
397 options::OPT_index_header_map);
402 // souls abuse -Wp, to pass preprocessor options in gcc syntax. To
404 // those options. :(
405 Args.AddAllArgValues(CmdArgs, options::OPT_Wp_COMMA,
406 options::OPT_Xpreprocessor);
409 if (Arg *A = Args.getLastArg(options::OPT_I_))
416 if (!Args.hasArg(options::OPT_isysroot)) {
484 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
494 if (Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
557 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
704 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
705 options::OPT_mhard_float,
706 options::OPT_mfloat_abi_EQ)) {
707 if (A->getOption().matches(options::OPT_msoft_float))
709 else if (A->getOption().matches(options::OPT_mhard_float))
783 // yet (it uses the -mfloat-abi and -msoft-float options), and it is
794 if (const Arg *A = Args.getLastArg(options::OPT_mfpu_EQ))
796 if (const Arg *A = Args.getLastArg(options::OPT_mhwdiv_EQ))
805 if (Arg *A = Args.getLastArg(options::OPT_mcrc,
806 options::OPT_mnocrc)) {
807 if (A->getOption().matches(options::OPT_mcrc))
827 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) {
856 // Determine floating point ABI from the options & target defaults.
893 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge,
894 options::OPT_mno_global_merge)) {
895 if (A->getOption().matches(options::OPT_mno_global_merge))
899 if (!Args.hasFlag(options::OPT_mimplicit_float,
900 options::OPT_mno_implicit_float,
907 if (Args.hasArg(options::OPT_ffixed_r9)) {
922 if (Arg *A = Args.getLastArg(options::OPT_march_EQ,
923 options::OPT_mcpu_EQ))
926 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) {
982 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
983 options::OPT_mhard_float,
984 options::OPT_mfloat_abi_EQ)) {
985 if (A->getOption().matches(options::OPT_msoft_float))
987 else if (A->getOption().matches(options::OPT_mhard_float))
1024 bool IsMips16 = Args.getLastArg(options::OPT_mips16) != NULL;
1032 if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {
1037 AddTargetFeature(Args, Features, options::OPT_msingle_float,
1038 options::OPT_mdouble_float, "single-float");
1039 AddTargetFeature(Args, Features, options::OPT_mips16, options::OPT_mno_mips16,
1041 AddTargetFeature(Args, Features, options::OPT_mmicromips,
1042 options::OPT_mno_micromips, "micromips");
1043 AddTargetFeature(Args, Features, options::OPT_mdsp, options::OPT_mno_dsp,
1045 AddTargetFeature(Args, Features, options::OPT_mdspr2, options::OPT_mno_dspr2,
1047 AddTargetFeature(Args, Features, options::OPT_mmsa, options::OPT_mno_msa,
1049 AddTargetFeature(Args, Features, options::OPT_mfp64, options::OPT_mfp32,
1066 bool IsMips16 = Args.getLastArg(options::OPT_mips16) != NULL;
1086 if (Arg *A = Args.getLastArg(options::OPT_mxgot, options::OPT_mno_xgot)) {
1087 if (A->getOption().matches(options::OPT_mxgot)) {
1093 if (Arg *A = Args.getLastArg(options::OPT_mldc1_sdc1,
1094 options::OPT_mno_ldc1_sdc1)) {
1095 if (A->getOption().matches(options::OPT_mno_ldc1_sdc1)) {
1101 if (Arg *A = Args.getLastArg(options::OPT_mcheck_zero_division,
1102 options::OPT_mno_check_zero_division)) {
1103 if (A->getOption().matches(options::OPT_mno_check_zero_division)) {
1109 if (Arg *A = Args.getLastArg(options::OPT_G)) {
1119 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
1181 for (arg_iterator it = Args.filtered_begin(options::OPT_m_ppc_Features_Group),
1206 AddTargetFeature(Args, Features, options::OPT_faltivec,
1207 options::OPT_fno_altivec, "altivec");
1212 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
1231 Args.getLastArg(options::OPT_msoft_float, options::OPT_mhard_float)) {
1232 if (A->getOption().matches(options::OPT_mhard_float))
1245 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
1246 options::OPT_mhard_float)) {
1247 if (A->getOption().matches(options::OPT_msoft_float))
1249 else if (A->getOption().matches(options::OPT_mhard_float))
1272 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ))
1279 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
1378 if (const Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
1413 for (arg_iterator it = Args.filtered_begin(options::OPT_m_x86_Features_Group),
1433 if (!Args.hasFlag(options::OPT_mred_zone,
1434 options::OPT_mno_red_zone,
1436 Args.hasArg(options::OPT_mkernel) ||
1437 Args.hasArg(options::OPT_fapple_kext))
1442 bool NoImplicitFloat = (Args.hasArg(options::OPT_mkernel) ||
1443 Args.hasArg(options::OPT_fapple_kext));
1444 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
1445 options::OPT_mno_soft_float,
1446 options::OPT_mimplicit_float,
1447 options::OPT_mno_implicit_float)) {
1449 NoImplicitFloat = (O.matches(options::OPT_mno_implicit_float) ||
1450 O.matches(options::OPT_msoft_float));
1457 return Args.hasArg(options::OPT_fPIC)
1458 || Args.hasArg(options::OPT_fpic);
1462 return Args.getLastArg(options::OPT_G,
1463 options::OPT_G_EQ,
1464 options::OPT_msmall_data_threshold_EQ);
1491 if (!Args.hasArg(options::OPT_fno_short_enums))
1493 if (Args.getLastArg(options::OPT_mieee_rnd_near)) {
1504 if (const Arg *A = Args.getLastArg(options::OPT_mfpu_EQ))
1595 Args.ClaimAllArgs(options::OPT_fexceptions);
1596 Args.ClaimAllArgs(options::OPT_fno_exceptions);
1597 Args.ClaimAllArgs(options::OPT_fobjc_exceptions);
1598 Args.ClaimAllArgs(options::OPT_fno_objc_exceptions);
1599 Args.ClaimAllArgs(options::OPT_fcxx_exceptions);
1600 Args.ClaimAllArgs(options::OPT_fno_cxx_exceptions);
1610 if (Arg *A = Args.getLastArg(options::OPT_fexceptions,
1611 options::OPT_fno_exceptions)) {
1612 if (A->getOption().matches(options::OPT_fexceptions))
1630 Args.hasFlag(options::OPT_fobjc_exceptions,
1631 options::OPT_fno_objc_exceptions,
1642 if (Arg *A = Args.getLastArg(options::OPT_fcxx_exceptions,
1643 options::OPT_fno_cxx_exceptions,
1644 options::OPT_fexceptions,
1645 options::OPT_fno_exceptions)) {
1646 if (A->getOption().matches(options::OPT_fcxx_exceptions))
1648 else if (A->getOption().matches(options::OPT_fno_cxx_exceptions))
1671 return !Args.hasFlag(options::OPT_fautolink, options::OPT_fno_autolink,
1683 return !Args.hasFlag(options::OPT_fdwarf2_cfi_asm,
1684 options::OPT_fno_dwarf2_cfi_asm,
1690 bool UseDwarfDirectory = Args.hasFlag(options::OPT_fdwarf_directory_asm,
1691 options::OPT_fno_dwarf_directory_asm,
1713 if (Arg *A = Args.getLastArg(options::OPT_O_Group))
1714 RelaxDefault = A->getOption().matches(options::OPT_O0);
1727 return Args.hasFlag(options::OPT_mrelax_all, options::OPT_mno_relax_all,
1746 // options.
1747 for (arg_iterator it = Args.filtered_begin(options::OPT_Wa_COMMA,
1748 options::OPT_Xassembler),
1786 if (!(Args.hasArg(options::OPT_fprofile_arcs) ||
1787 Args.hasArg(options::OPT_fprofile_generate) ||
1788 Args.hasArg(options::OPT_fcreate_profile) ||
1789 Args.hasArg(options::OPT_coverage)))
1855 if (!Args.hasArg(options::OPT_shared))
1864 if (!Args.hasArg(options::OPT_shared))
1872 if (!Args.hasArg(options::OPT_shared))
1880 if (!Args.hasArg(options::OPT_shared))
1904 if (!Args.hasArg(options::OPT_shared))
1920 if (Arg *A = Args.getLastArg(options::OPT_O_Group))
1921 if (!A->getOption().matches(options::OPT_O0))
1933 if (Arg *A = Args.getLastArg(options::OPT_fno_omit_frame_pointer,
1934 options::OPT_fomit_frame_pointer))
1935 return A->getOption().matches(options::OPT_fno_omit_frame_pointer);
1942 if (Arg *A = Args.getLastArg(options::OPT_mno_omit_leaf_frame_pointer,
1943 options::OPT_momit_leaf_frame_pointer))
1944 return A->getOption().matches(options::OPT_mno_omit_leaf_frame_pointer);
1960 Arg *FinalOutput = Args.getLastArg(options::OPT_o);
1961 if (FinalOutput && Args.hasArg(options::OPT_c)) {
1967 SmallString<128> T(Args.getLastArgValue(options::OPT_fdebug_compilation_dir));
2002 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
2003 if (A->getOption().matches(options::OPT_O4) ||
2004 A->getOption().matches(options::OPT_Ofast))
2007 if (A->getOption().matches(options::OPT_O0))
2010 assert(A->getOption().matches(options::OPT_O) && "Must have a -O flag");
2036 bool KernelOrKext = Args.hasArg(options::OPT_mkernel,
2037 options::OPT_fapple_kext);
2066 if (Args.hasArg(options::OPT_rewrite_objc) &&
2067 !Args.hasArg(options::OPT_g_Group))
2076 (void) Args.hasArg(options::OPT_force__cpusubtype__ALL);
2131 if (Args.hasArg(options::OPT_static))
2144 if (!Args.hasArg(options::OPT__analyzer_no_default_checks)) {
2170 if (Arg *A = Args.getLastArg(options::OPT__analyzer_output))
2181 Args.AddAllArgValues(CmdArgs, options::OPT_Xanalyzer);
2190 // For the PIC and PIE flag options, this logic is different from the
2198 Arg *LastPICArg =Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
2199 options::OPT_fpic, options::OPT_fno_pic,
2200 options::OPT_fPIE, options::OPT_fno_PIE,
2201 options::OPT_fpie, options::OPT_fno_pie);
2207 if (O.matches(options::OPT_fPIC) || O.matches(options::OPT_fpic) ||
2208 O.matches(options::OPT_fPIE) || O.matches(options::OPT_fpie)) {
2209 PIE = O.matches(options::OPT_fPIE) || O.matches(options::OPT_fpie);
2210 PIC = PIE || O.matches(options::OPT_fPIC) ||
2211 O.matches(options::OPT_fpic);
2212 IsPICLevelTwo = O.matches(options::OPT_fPIE) ||
2213 O.matches(options::OPT_fPIC);
2228 // PIC or PIE options above, if these show up, PIC is disabled.
2233 if (Args.hasArg(options::OPT_static))
2236 if (Arg *A = Args.getLastArg(options::OPT_mdynamic_no_pic)) {
2271 if (!Args.hasFlag(options::OPT_fmerge_all_constants,
2272 options::OPT_fno_merge_all_constants))
2277 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) {
2282 if (Arg *A = Args.getLastArg(options::OPT_fpcc_struct_return,
2283 options::OPT_freg_struct_return)) {
2287 } else if (A->getOption().matches(options::OPT_fpcc_struct_return)) {
2290 assert(A->getOption().matches(options::OPT_freg_struct_return));
2295 if (Args.hasFlag(options::OPT_mrtd, options::OPT_mno_rtd, false))
2300 if (!Args.hasFlag(options::OPT_fzero_initialized_in_bss,
2301 options::OPT_fno_zero_initialized_in_bss))
2307 OptSpecifier StrictAliasingAliasOption = OFastEnabled ? options::OPT_Ofast :
2308 options::OPT_fstrict_aliasing;
2309 if (!Args.hasFlag(options::OPT_fstrict_aliasing, StrictAliasingAliasOption,
2310 options::OPT_fno_strict_aliasing, true))
2312 if (!Args.hasFlag(options::OPT_fstruct_path_tbaa,
2313 options::OPT_fno_struct_path_tbaa))
2315 if (Args.hasFlag(options::OPT_fstrict_enums, options::OPT_fno_strict_enums,
2318 if (!Args.hasFlag(options::OPT_foptimize_sibling_calls,
2319 options::OPT_fno_optimize_sibling_calls))
2323 if (Args.hasArg(options::OPT_fsplit_stack))
2328 OptSpecifier FastMathAliasOption = OFastEnabled ? options::OPT_Ofast :
2329 options::OPT_ffast_math;
2336 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
2337 options::OPT_fno_fast_math,
2338 options::OPT_ffinite_math_only,
2339 options::OPT_fno_finite_math_only,
2340 options::OPT_fhonor_infinities,
2341 options::OPT_fno_honor_infinities))
2342 if (A->getOption().getID() != options::OPT_fno_fast_math &&
2343 A->getOption().getID() != options::OPT_fno_finite_math_only &&
2344 A->getOption().getID() != options::OPT_fhonor_infinities)
2346 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
2347 options::OPT_fno_fast_math,
2348 options::OPT_ffinite_math_only,
2349 options::OPT_fno_finite_math_only,
2350 options::OPT_fhonor_nans,
2351 options::OPT_fno_honor_nans))
2352 if (A->getOption().getID() != options::OPT_fno_fast_math &&
2353 A->getOption().getID() != options::OPT_fno_finite_math_only &&
2354 A->getOption().getID() != options::OPT_fhonor_nans)
2359 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
2360 options::OPT_fno_fast_math,
2361 options::OPT_fmath_errno,
2362 options::OPT_fno_math_errno)) {
2366 if (A->getOption().getID() == options::OPT_fno_math_errno ||
2367 A->getOption().getID() == options::OPT_ffast_math ||
2368 A->getOption().getID() == options::OPT_Ofast)
2370 else if (A->getOption().getID() == options::OPT_fmath_errno)
2381 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
2382 options::OPT_fno_fast_math,
2383 options::OPT_funsafe_math_optimizations,
2384 options::OPT_fno_unsafe_math_optimizations,
2385 options::OPT_fassociative_math,
2386 options::OPT_fno_associative_math))
2387 if (A->getOption().getID() != options::OPT_fno_fast_math &&
2388 A->getOption().getID() != options::OPT_fno_unsafe_math_optimizations &&
2389 A->getOption().getID() != options::OPT_fno_associative_math)
2392 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
2393 options::OPT_fno_fast_math,
2394 options::OPT_funsafe_math_optimizations,
2395 options::OPT_fno_unsafe_math_optimizations,
2396 options::OPT_freciprocal_math,
2397 options::OPT_fno_reciprocal_math))
2398 if (A->getOption().getID() != options::OPT_fno_fast_math &&
2399 A->getOption().getID() != options::OPT_fno_unsafe_math_optimizations &&
2400 A->getOption().getID() != options::OPT_fno_reciprocal_math)
2403 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
2404 options::OPT_fno_fast_math,
2405 options::OPT_funsafe_math_optimizations,
2406 options::OPT_fno_unsafe_math_optimizations,
2407 options::OPT_fsigned_zeros,
2408 options::OPT_fno_signed_zeros))
2409 if (A->getOption().getID() != options::OPT_fno_fast_math &&
2410 A->getOption().getID() != options::OPT_fno_unsafe_math_optimizations &&
2411 A->getOption().getID() != options::OPT_fsigned_zeros)
2414 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
2415 options::OPT_fno_fast_math,
2416 options::OPT_funsafe_math_optimizations,
2417 options::OPT_fno_unsafe_math_optimizations,
2418 options::OPT_ftrapping_math,
2419 options::OPT_fno_trapping_math))
2420 if (A->getOption().getID() != options::OPT_fno_fast_math &&
2421 A->getOption().getID() != options::OPT_fno_unsafe_math_optimizations &&
2422 A->getOption().getID() != options::OPT_ftrapping_math)
2430 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
2431 options::OPT_fno_fast_math,
2432 options::OPT_ffp_contract)) {
2433 if (A->getOption().getID() == options::OPT_ffp_contract) {
2441 } else if (A->getOption().matches(options::OPT_ffast_math) ||
2442 (OFastEnabled && A->getOption().matches(options::OPT_Ofast))) {
2451 // these options induce language changes which must survive serialization
2453 if (Arg *A = Args.getLastArg(options::OPT_ffast_math, FastMathAliasOption,
2454 options::OPT_fno_fast_math))
2455 if (!A->getOption().matches(options::OPT_fno_fast_math))
2457 if (Arg *A = Args.getLastArg(options::OPT_ffinite_math_only, options::OPT_fno_fast_math))
2458 if (A->getOption().matches(options::OPT_ffinite_math_only))
2464 if (Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm,
2466 Args.hasArg(options::OPT_dA))
2469 if (Args.hasArg(options::OPT_fdebug_pass_structure)) {
2473 if (Args.hasArg(options::OPT_fdebug_pass_arguments)) {
2488 if (Args.hasArg(options::OPT_mms_bitfields)) {
2496 Args.hasFlag(options::OPT_fasynchronous_unwind_tables,
2497 options::OPT_fno_asynchronous_unwind_tables,
2500 if (Args.hasFlag(options::OPT_funwind_tables, options::OPT_fno_unwind_tables,
2506 if (Arg *A = Args.getLastArg(options::OPT_flimited_precision_EQ)) {
2512 (void) Args.hasArg(options::OPT_mtune_EQ);
2514 if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) {
2528 if (const Arg *A = Args.getLastArg(options::OPT_mfpmath_EQ)) {
2572 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
2583 if (!Args.hasArg(options::OPT_fallow_unsupported)) {
2588 if ((Unsupported = Args.getLastArg(options::OPT_fapple_kext)) ||
2589 (Unsupported = Args.getLastArg(options::OPT_mkernel)))
2595 Args.AddAllArgs(CmdArgs, options::OPT_v);
2596 Args.AddLastArg(CmdArgs, options::OPT_H);
2602 Args.AddLastArg(CmdArgs, options::OPT_P);
2603 Args.AddLastArg(CmdArgs, options::OPT_print_ivar_layout);
2612 // is preserved, all other debug options are substituted with "-g".
2613 Args.ClaimAllArgs(options::OPT_g_Group);
2614 if (Arg *A = Args.getLastArg(options::OPT_g_Group)) {
2615 if (A->getOption().matches(options::OPT_gline_tables_only))
2617 else if (A->getOption().matches(options::OPT_gdwarf_2))
2619 else if (A->getOption().matches(options::OPT_gdwarf_3))
2621 else if (A->getOption().matches(options::OPT_gdwarf_4))
2623 else if (!A->getOption().matches(options::OPT_g0) &&
2624 !A->getOption().matches(options::OPT_ggdb0)) {
2635 Args.ClaimAllArgs(options::OPT_g_flags_Group);
2636 if (Args.hasArg(options::OPT_gcolumn_info))
2639 // FIXME: Move backend command line options to the module.
2644 Args.hasArg(options::OPT_gsplit_dwarf)) {
2651 if (Args.hasArg(options::OPT_ggnu_pubnames)) {
2656 Args.AddAllArgs(CmdArgs, options::OPT_fdebug_types_section);
2658 Args.AddAllArgs(CmdArgs, options::OPT_ffunction_sections);
2659 Args.AddAllArgs(CmdArgs, options::OPT_fdata_sections);
2661 Args.AddAllArgs(CmdArgs, options::OPT_finstrument_functions);
2663 if (Args.hasArg(options::OPT_ftest_coverage) ||
2664 Args.hasArg(options::OPT_coverage))
2666 if (Args.hasArg(options::OPT_fprofile_arcs) ||
2667 Args.hasArg(options::OPT_coverage))
2670 if (C.getArgs().hasArg(options::OPT_c) ||
2671 C.getArgs().hasArg(options::OPT_S)) {
2686 // Pass options for controlling the default header search paths.
2687 if (Args.hasArg(options::OPT_nostdinc)) {
2691 if (Args.hasArg(options::OPT_nostdlibinc))
2693 Args.AddLastArg(CmdArgs, options::OPT_nostdincxx);
2694 Args.AddLastArg(CmdArgs, options::OPT_nobuiltininc);
2701 Args.AddLastArg(CmdArgs, options::OPT_working_directory);
2704 if (!Args.hasArg(options::OPT_fno_objc_arc, options::OPT_fobjc_arc)) {
2705 if (const Arg *A = Args.getLastArg(options::OPT_ccc_arcmt_check,
2706 options::OPT_ccc_arcmt_modify,
2707 options::OPT_ccc_arcmt_migrate)) {
2712 case options::OPT_ccc_arcmt_check:
2715 case options::OPT_ccc_arcmt_modify:
2718 case options::OPT_ccc_arcmt_migrate:
2723 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_report_output);
2724 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_emit_arc_errors);
2729 Args.ClaimAllArgs(options::OPT_ccc_arcmt_check);
2730 Args.ClaimAllArgs(options::OPT_ccc_arcmt_modify);
2731 Args.ClaimAllArgs(options::OPT_ccc_arcmt_migrate);
2734 if (const Arg *A = Args.getLastArg(options::OPT_ccc_objcmt_migrate)) {
2742 if (!Args.hasArg(options::OPT_objcmt_migrate_literals,
2743 options::OPT_objcmt_migrate_subscripting,
2744 options::OPT_objcmt_migrate_property)) {
2750 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals);
2751 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting);
2752 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property);
2755 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_literals);
2756 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_subscripting);
2757 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_property);
2758 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_all);
2759 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readonly_property);
2760 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_readwrite_property);
2761 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_annotation);
2762 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_instancetype);
2763 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_nsmacros);
2764 Args.AddLastArg(CmdArgs, options::OPT_objcmt_migrate_protocol_conformance);
2765 Args.AddLastArg(CmdArgs, options::OPT_objcmt_atomic_property);
2766 Args.AddLastArg(CmdArgs, options::OPT_objcmt_returns_innerpointer_property);
2767 Args.AddLastArg(CmdArgs, options::OPT_objcmt_ns_nonatomic_iosonly);
2768 Args.AddLastArg(CmdArgs, options::OPT_objcmt_white_list_dir_path);
2771 // Add preprocessing options like -I, -D, etc. if we are using the
2780 // When building with ccache, it will pass -D options to clang even on
2782 Args.ClaimAllArgs(options::OPT_D);
2785 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
2786 if (A->getOption().matches(options::OPT_O4)) {
2796 Args.ClaimAllArgs(options::OPT_flto);
2798 Args.AddAllArgs(CmdArgs, options::OPT_W_Group);
2799 if (Args.hasFlag(options::OPT_pedantic, options::OPT_no_pedantic, false))
2801 Args.AddLastArg(CmdArgs, options::OPT_pedantic_errors);
2802 Args.AddLastArg(CmdArgs, options::OPT_w);
2809 if (Arg *Std = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi)) {
2810 if (Std->getOption().matches(options::OPT_ansi))
2818 if (Arg *A = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi,
2819 options::OPT_trigraphs))
2830 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ,
2835 Args.AddLastArg(CmdArgs, options::OPT_trigraphs);
2858 Args.hasFlag(options::OPT_Wdeprecated, options::OPT_Wno_deprecated,
2864 if (Arg *Asm = Args.getLastArg(options::OPT_fasm, options::OPT_fno_asm)) {
2865 if (Asm->getOption().matches(options::OPT_fasm))
2883 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_depth_,
2884 options::OPT_ftemplate_depth_EQ)) {
2889 if (Arg *A = Args.getLastArg(options::OPT_foperator_arrow_depth_EQ)) {
2894 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_depth_EQ)) {
2899 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_steps_EQ)) {
2904 if (Arg *A = Args.getLastArg(options::OPT_fbracket_depth_EQ)) {
2909 if (Arg *A = Args.getLastArg(options::OPT_Wlarge_by_value_copy_EQ,
2910 options::OPT_Wlarge_by_value_copy_def)) {
2919 if (Args.hasArg(options::OPT_relocatable_pch))
2922 if (Arg *A = Args.getLastArg(options::OPT_fconstant_string_class_EQ)) {
2927 if (Arg *A = Args.getLastArg(options::OPT_ftabstop_EQ)) {
2933 if (Arg *A = Args.getLastArg(options::OPT_ferror_limit_EQ))
2938 if (Arg *A = Args.getLastArg(options::OPT_fmacro_backtrace_limit_EQ)) {
2943 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_backtrace_limit_EQ)) {
2948 if (Arg *A = Args.getLastArg(options::OPT_fconstexpr_backtrace_limit_EQ)) {
2955 if (Arg *A = Args.getLastArg(options::OPT_fmessage_length_EQ)) {
2965 if (const Arg *A = Args.getLastArg(options::OPT_fvisibility_EQ,
2966 options::OPT_fvisibility_ms_compat)) {
2967 if (A->getOption().matches(options::OPT_fvisibility_EQ)) {
2971 assert(A->getOption().matches(options::OPT_fvisibility_ms_compat));
2979 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_inlines_hidden);
2981 Args.AddLastArg(CmdArgs, options::OPT_ftlsmodel_EQ);
2984 if (Args.hasFlag(options::OPT_ffreestanding, options::OPT_fhosted, false) ||
2988 // Forward -f (flag) options which we can pass directly.
2989 Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls);
2990 Args.AddLastArg(CmdArgs, options::OPT_fformat_extensions);
2991 Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions);
2992 Args.AddLastArg(CmdArgs, options::OPT_fstandalone_debug);
2993 Args.AddLastArg(CmdArgs, options::OPT_fno_standalone_debug);
2994 Args.AddLastArg(CmdArgs, options::OPT_fno_operator_names);
2998 Args.AddLastArg(CmdArgs, options::OPT_faltivec);
2999 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_show_template_tree);
3000 Args.AddLastArg(CmdArgs, options::OPT_fno_elide_type);
3005 if (!Args.hasFlag(options::OPT_fsanitize_recover,
3006 options::OPT_fno_sanitize_recover,
3010 if (Args.hasArg(options::OPT_fcatch_undefined_behavior) ||
3011 Args.hasFlag(options::OPT_fsanitize_undefined_trap_on_error,
3012 options::OPT_fno_sanitize_undefined_trap_on_error, false))
3016 if (const Arg *A = Args.getLastArg(options::OPT_faltivec))
3024 Args.AddLastArg(CmdArgs, options::OPT_pg);
3027 if (!Args.hasFlag(options::OPT_flax_vector_conversions,
3028 options::OPT_fno_lax_vector_conversions))
3031 if (Args.getLastArg(options::OPT_fapple_kext))
3034 if (Args.hasFlag(options::OPT_frewrite_includes,
3035 options::OPT_fno_rewrite_includes, false))
3038 Args.AddLastArg(CmdArgs, options::OPT_fobjc_sender_dependent_dispatch);
3039 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info);
3040 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_parseable_fixits);
3041 Args.AddLastArg(CmdArgs, options::OPT_ftime_report);
3042 Args.AddLastArg(CmdArgs, options::OPT_ftrapv);
3044 if (Arg *A = Args.getLastArg(options::OPT_ftrapv_handler_EQ)) {
3049 Args.AddLastArg(CmdArgs, options::OPT_ftrap_function_EQ);
3053 if (Arg *A = Args.getLastArg(options::OPT_fwrapv,
3054 options::OPT_fno_wrapv)) {
3055 if (A->getOption().matches(options::OPT_fwrapv))
3057 } else if (Arg *A = Args.getLastArg(options::OPT_fstrict_overflow,
3058 options::OPT_fno_strict_overflow)) {
3059 if (A->getOption().matches(options::OPT_fno_strict_overflow))
3063 if (Arg *A = Args.getLastArg(options::OPT_freroll_loops,
3064 options::OPT_fno_reroll_loops))
3065 if (A->getOption().matches(options::OPT_freroll_loops))
3068 Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings);
3069 Args.AddLastArg(CmdArgs, options::OPT_funroll_loops,
3070 options::OPT_fno_unroll_loops);
3072 Args.AddLastArg(CmdArgs, options::OPT_pthread);
3077 if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector,
3078 options::OPT_fstack_protector_all,
3079 options::OPT_fstack_protector)) {
3080 if (A->getOption().matches(options::OPT_fstack_protector))
3082 else if (A->getOption().matches(options::OPT_fstack_protector_all))
3094 for (arg_iterator it = Args.filtered_begin(options::OPT__param),
3108 if (Args.hasFlag(options::OPT_mstackrealign, options::OPT_mno_stackrealign,
3113 if (!Args.hasFlag(options::OPT_mno_stackrealign, options::OPT_mstackrealign,
3118 if (Args.hasArg(options::OPT_mstack_alignment)) {
3119 StringRef alignment = Args.getLastArgValue(options::OPT_mstack_alignment);
3124 if (Arg *A = Args.getLastArg(options::OPT_mno_unaligned_access,
3125 options::OPT_munaligned_access)) {
3126 if (A->getOption().matches(options::OPT_mno_unaligned_access)) {
3136 if (Arg *A = Args.getLastArg(options::OPT_mrestrict_it,
3137 options::OPT_mno_restrict_it)) {
3138 if (A->getOption().matches(options::OPT_mrestrict_it)) {
3147 // Forward -f options with positive and negative forms; we translate
3149 if (Arg *A = Args.getLastArg(options::OPT_fprofile_sample_use_EQ)) {
3157 if (Args.hasArg(options::OPT_mkernel)) {
3158 if (!Args.hasArg(options::OPT_fapple_kext) && types::isCXX(InputType))
3160 if (!Args.hasArg(options::OPT_fbuiltin))
3162 Args.ClaimAllArgs(options::OPT_fno_builtin);
3165 else if (!Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin))
3168 if (!Args.hasFlag(options::OPT_fassume_sane_operator_new,
3169 options::OPT_fno_assume_sane_operator_new))
3173 if (Args.hasFlag(options::OPT_fblocks, options::OPT_fno_blocks,
3175 (Args.hasArg(options::OPT_fgnu_runtime) &&
3176 Args.hasArg(options::OPT_fobjc_nonfragile_abi) &&
3177 !Args.hasArg(options::OPT_fno_blocks))) {
3180 if (!Args.hasArg(options::OPT_fgnu_runtime) &&
3189 if (Args.hasFlag(options::OPT_fmodules, options::OPT_fno_modules, false)) {
3190 bool AllowedInCXX = Args.hasFlag(options::OPT_fcxx_modules,
3191 options::OPT_fno_cxx_modules,
3201 if (Args.hasFlag(options::OPT_fmodule_maps, options::OPT_fno_module_maps,
3208 if (Args.hasFlag(options::OPT_fmodules_decluse,
3209 options::OPT_fno_modules_decluse,
3216 if (Arg *A = Args.getLastArg(options::OPT_fmodule_name)) {
3223 if (Arg *A = Args.getLastArg(options::OPT_fmodule_map_file)) {
3230 if (Arg *A = Args.getLastArg(options::OPT_fmodules_cache_path)) {
3248 Args.AddAllArgs(CmdArgs, options::OPT_fmodules_ignore_macro);
3249 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_interval);
3250 Args.AddLastArg(CmdArgs, options::OPT_fmodules_prune_after);
3253 if (Args.hasFlag(options::OPT_fno_access_control,
3254 options::OPT_faccess_control,
3259 if (Args.hasFlag(options::OPT_fno_elide_constructors,
3260 options::OPT_felide_constructors,
3265 if (!Args.hasFlag(options::OPT_frtti, options::OPT_fno_rtti) ||
3272 Args.getLastArg(options::OPT_mkernel,
3273 options::OPT_fapple_kext,
3274 options::OPT_fno_rtti)->getAsString(Args);
3281 if (Args.hasFlag(options::OPT_fshort_enums,
3282 options::OPT_fno_short_enums,
3288 if (!Args.hasFlag(options::OPT_fsigned_char, options::OPT_funsigned_char,
3293 if (!Args.hasFlag(options::OPT_fthreadsafe_statics,
3294 options::OPT_fno_threadsafe_statics))
3299 options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit,
3308 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions,
3313 if (Args.hasFlag(options::OPT_fms_compatibility,
3314 options::OPT_fno_ms_compatibility,
3316 Args.hasFlag(options::OPT_fms_extensions,
3317 options::OPT_fno_ms_extensions,
3322 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions,
3324 Args.hasArg(options::OPT_fmsc_version)) {
3325 StringRef msc_ver = Args.getLastArgValue(options::OPT_fmsc_version);
3334 if (Args.hasFlag(options::OPT_fborland_extensions,
3335 options::OPT_fno_borland_extensions, false))
3340 if (Args.hasFlag(options::OPT_fdelayed_template_parsing,
3341 options::OPT_fno_delayed_template_parsing,
3347 if (Arg *A = Args.getLastArg(options::OPT_fgnu_keywords,
3348 options::OPT_fno_gnu_keywords))
3351 if (Args.hasFlag(options::OPT_fgnu89_inline,
3352 options::OPT_fno_gnu89_inline,
3356 if (Args.hasArg(options::OPT_fno_inline))
3359 if (Args.hasArg(options::OPT_fno_inline_functions))
3368 if (!Args.hasFlag(options::OPT_fobjc_legacy_dispatch,
3369 options::OPT_fno_objc_legacy_dispatch,
3414 if (Args.hasFlag(options::OPT_fobjc_arc_exceptions,
3415 options::OPT_fno_objc_arc_exceptions,
3427 const Arg *GCArg = Args.getLastArg(options::OPT_fobjc_gc_only);
3429 GCArg = Args.getLastArg(options::OPT_fobjc_gc);
3451 if (!Args.hasFlag(options::OPT_fassume_sane_operator_new,
3452 options::OPT_fno_assume_sane_operator_new))
3457 if (!Args.hasFlag(options::OPT_fconstant_cfstrings,
3458 options::OPT_fno_constant_cfstrings) ||
3459 !Args.hasFlag(options::OPT_mconstant_cfstrings,
3460 options::OPT_mno_constant_cfstrings))
3465 if (Arg *A = Args.getLastArg(options::OPT_fshort_wchar))
3469 if (Args.hasFlag(options::OPT_fpascal_strings,
3470 options::OPT_fno_pascal_strings,
3476 if (Arg *A = Args.getLastArg(options::OPT_fpack_struct_EQ)) {
3480 } else if (Args.hasFlag(options::OPT_fpack_struct,
3481 options::OPT_fno_pack_struct, false)) {
3486 if (!Args.hasArg(options::OPT_fcommon))
3488 Args.ClaimAllArgs(options::OPT_fno_common);
3492 else if (!Args.hasFlag(options::OPT_fcommon, options::OPT_fno_common))
3497 if (!Args.hasFlag(options::OPT_fsigned_bitfields,
3498 options::OPT_funsigned_bitfields))
3500 << Args.getLastArg(options::OPT_funsigned_bitfields)->getAsString(Args);
3503 if (!Args.hasFlag(options::OPT_ffor_scope,
3504 options::OPT_fno_for_scope))
3506 << Args.getLastArg(options::OPT_fno_for_scope)->getAsString(Args);
3509 if (!Args.hasFlag(options::OPT_fcaret_diagnostics,
3510 options::OPT_fno_caret_diagnostics, true))
3514 if (!Args.hasFlag(options::OPT_fdiagnostics_fixit_info,
3515 options::OPT_fno_diagnostics_fixit_info))
3519 if (Args.hasFlag(options::OPT_fdiagnostics_show_option,
3520 options::OPT_fno_diagnostics_show_option))
3524 Args.getLastArg(options::OPT_fdiagnostics_show_category_EQ)) {
3530 Args.getLastArg(options::OPT_fdiagnostics_format_EQ)) {
3536 options::OPT_fdiagnostics_show_note_include_stack,
3537 options::OPT_fno_diagnostics_show_note_include_stack)) {
3539 options::OPT_fdiagnostics_show_note_include_stack))
3553 if (!O.matches(options::OPT_fcolor_diagnostics) &&
3554 !O.matches(options::OPT_fdiagnostics_color) &&
3555 !O.matches(options::OPT_fno_color_diagnostics) &&
3556 !O.matches(options::OPT_fno_diagnostics_color) &&
3557 !O.matches(options::OPT_fdiagnostics_color_EQ))
3561 if (O.matches(options::OPT_fcolor_diagnostics) ||
3562 O.matches(options::OPT_fdiagnostics_color)) {
3564 } else if (O.matches(options::OPT_fno_color_diagnostics) ||
3565 O.matches(options::OPT_fno_diagnostics_color)) {
3568 assert(O.matches(options::OPT_fdiagnostics_color_EQ));
3585 if (Args.hasArg(options::OPT_fansi_escape_codes))
3588 if (!Args.hasFlag(options::OPT_fshow_source_location,
3589 options::OPT_fno_show_source_location))
3592 if (!Args.hasFlag(options::OPT_fshow_column,
3593 options::OPT_fno_show_column,
3597 if (!Args.hasFlag(options::OPT_fspell_checking,
3598 options::OPT_fno_spell_checking))
3603 if (Args.hasFlag(options::OPT_fasm_blocks, options::OPT_fno_asm_blocks,
3611 OptSpecifier VectorizeAliasOption = EnableVec ? options::OPT_O_Group :
3612 options::OPT_fvectorize;
3613 if (Args.hasFlag(options::OPT_fvectorize, VectorizeAliasOption,
3614 options::OPT_fno_vectorize, EnableVec))
3618 if (Args.hasFlag(options::OPT_fslp_vectorize,
3619 options::OPT_fno_slp_vectorize, true))
3623 if (Args.hasFlag(options::OPT_fslp_vectorize_aggressive,
3624 options::OPT_fno_slp_vectorize_aggressive, false))
3627 if (Arg *A = Args.getLastArg(options::OPT_fshow_overloads_EQ))
3632 if (Arg *A = Args.getLastArg(options::OPT_fdollars_in_identifiers,
3633 options::OPT_fno_dollars_in_identifiers)) {
3634 if (A->getOption().matches(options::OPT_fdollars_in_identifiers))
3642 if (Arg *A = Args.getLastArg(options::OPT_funit_at_a_time,
3643 options::OPT_fno_unit_at_a_time)) {
3644 if (A->getOption().matches(options::OPT_fno_unit_at_a_time))
3648 if (Args.hasFlag(options::OPT_fapple_pragma_pack,
3649 options::OPT_fno_apple_pragma_pack, false))
3666 if (!Args.hasArg(options::OPT_fbuiltin_strcat))
3668 if (!Args.hasArg(options::OPT_fbuiltin_strcpy))
3674 if (Arg *A = Args.getLastArg(options::OPT_traditional,
3675 options::OPT_traditional_cpp)) {
3682 Args.AddLastArg(CmdArgs, options::OPT_dM);
3683 Args.AddLastArg(CmdArgs, options::OPT_dD);
3686 if (Arg *A = Args.getLastArg(options::OPT__serialize_diags)) {
3691 if (Args.hasArg(options::OPT_fretain_comments_from_system_headers))
3695 Args.AddAllArgs(CmdArgs, options::OPT_fcomment_block_commands);
3697 Args.AddAllArgs(CmdArgs, options::OPT_fparse_all_comments);
3701 Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
3702 for (arg_iterator it = Args.filtered_begin(options::OPT_mllvm),
3727 if (Args.hasArg(options::OPT_rewrite_objc))
3737 Args.AddAllArgs(CmdArgs, options::OPT_undef);
3761 bool SplitDwarf = Args.hasArg(options::OPT_gsplit_dwarf) &&
3772 if (Args.hasArg(options::OPT__SLASH_fallback)) {
3788 if (Arg *A = Args.getLastArg(options::OPT_pg))
3789 if (Args.hasArg(options::OPT_fomit_frame_pointer))
3798 Args.ClaimAllArgs(options::OPT_fpch_preprocess);
3802 Args.ClaimAllArgs(options::OPT_clang_ignored_f_Group);
3803 Args.ClaimAllArgs(options::OPT_clang_ignored_m_Group);
3806 Args.ClaimAllArgs(options::OPT_emit_llvm);
3809 /// Add options related to the Objective-C runtime/ABI.
3816 Arg *runtimeArg = args.getLastArg(options::OPT_fnext_runtime,
3817 options::OPT_fgnu_runtime,
3818 options::OPT_fobjc_runtime_EQ);
3821 // options about fragility.
3823 runtimeArg->getOption().matches(options::OPT_fobjc_runtime_EQ)) {
3842 if (Arg *abiArg = args.getLastArg(options::OPT_fobjc_abi_version_EQ)) {
3859 if (args.hasFlag(options::OPT_fobjc_nonfragile_abi,
3860 options::OPT_fno_objc_nonfragile_abi,
3870 options::OPT_fobjc_nonfragile_abi_version_EQ)) {
3908 } else if (runtimeArg->getOption().matches(options::OPT_fnext_runtime)) {
3920 assert(runtimeArg->getOption().matches(options::OPT_fgnu_runtime));
3935 unsigned RTOptionID = options::OPT__SLASH_MT;
3937 if (Args.hasArg(options::OPT__SLASH_LDd))
3940 RTOptionID = options::OPT__SLASH_MTd;
3942 if (Arg *A = Args.getLastArg(options::OPT__SLASH_M_Group))
3946 case options::OPT__SLASH_MD:
3947 if (Args.hasArg(options::OPT__SLASH_LDd))
3953 case options::OPT__SLASH_MDd:
3959 case options::OPT__SLASH_MT:
3960 if (Args.hasArg(options::OPT__SLASH_LDd))
3965 case options::OPT__SLASH_MTd:
3983 if (Arg *A = Args.getLastArg(options::OPT_show_includes))
3986 if (!Args.hasArg(options::OPT_fdiagnostics_format_EQ)) {
3988 if (Args.hasArg(options::OPT__SLASH_fallback))
4006 Args.ClaimAllArgs(options::OPT_w);
4008 Args.ClaimAllArgs(options::OPT_emit_llvm);
4044 (void) Args.hasArg(options::OPT_force__cpusubtype__ALL);
4057 Args.ClaimAllArgs(options::OPT_g_Group);
4058 if (Arg *A = Args.getLastArg(options::OPT_g_Group))
4059 if (!A->getOption().matches(options::OPT_g0))
4095 Args.AddAllArgs(CmdArgs, options::OPT_mllvm);
4110 if (Args.hasArg(options::OPT_gsplit_dwarf) &&
4130 A->getOption().matches(options::OPT_g_Group))
4135 A->getOption().matches(options::OPT_W_Group))
4184 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
4185 options::OPT_Xassembler);
4194 // inputs into '-Wl,' options?
4221 // Reverse translate some rewritten options.
4222 if (A.getOption().matches(options::OPT_Z_reserved_lib_stdcxx)) {
4316 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
4317 options::OPT_Xassembler);
4326 // inputs into '-Wl,' options?
4376 bool hasStaticArg = Args.hasArg(options::OPT_static);
4377 bool buildingLib = Args.hasArg(options::OPT_shared);
4378 bool buildPIE = Args.hasArg(options::OPT_pie);
4379 bool incStdLib = !Args.hasArg(options::OPT_nostdlib);
4380 bool incStartFiles = !Args.hasArg(options::OPT_nostartfiles);
4381 bool incDefLibs = !Args.hasArg(options::OPT_nodefaultlibs);
4385 // Silence warnings for various options
4388 Args.ClaimAllArgs(options::OPT_g_Group);
4389 Args.ClaimAllArgs(options::OPT_emit_llvm);
4390 Args.ClaimAllArgs(options::OPT_w); // Other warning options are already
4392 Args.ClaimAllArgs(options::OPT_static_libgcc);
4445 for (arg_iterator it = Args.filtered_begin(options::OPT_moslib_EQ),
4486 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
4487 Args.AddAllArgs(CmdArgs, options::OPT_e);
4488 Args.AddAllArgs(CmdArgs, options::OPT_s);
4489 Args.AddAllArgs(CmdArgs, options::OPT_t);
4490 Args.AddAllArgs(CmdArgs, options::OPT_u_Group);
4583 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) {
4614 if (Args.hasArg(options::OPT_no_integrated_as)) {
4623 if (Args.hasArg(options::OPT_gstabs))
4625 else if (Args.hasArg(options::OPT_g_Group))
4635 Args.hasArg(options::OPT_force__cpusubtype__ALL))
4639 (((Args.hasArg(options::OPT_mkernel) ||
4640 Args.hasArg(options::OPT_fapple_kext)) &&
4643 Args.hasArg(options::OPT_static)))
4646 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
4647 options::OPT_Xassembler);
4698 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
4709 if (Version[0] >= 100 && !Args.hasArg(options::OPT_Z_Xlinker__no_demangle)) {
4714 Args.hasArg(options::OPT_static));
4716 for (arg_iterator it = Args.filtered_begin(options::OPT_Xlinker,
4717 options::OPT_Wl_COMMA),
4729 if (Args.hasArg(options::OPT_rdynamic) && Version[0] >= 137)
4744 Args.AddAllArgs(CmdArgs, options::OPT_static);
4745 if (!Args.hasArg(options::OPT_static))
4747 if (Args.hasArg(options::OPT_fgnu_runtime)) {
4752 if (!Args.hasArg(options::OPT_dynamiclib)) {
4755 Args.AddLastArg(CmdArgs, options::OPT_force__cpusubtype__ALL);
4757 Args.AddLastArg(CmdArgs, options::OPT_bundle);
4758 Args.AddAllArgs(CmdArgs, options::OPT_bundle__loader);
4759 Args.AddAllArgs(CmdArgs, options::OPT_client__name);
4762 if ((A = Args.getLastArg(options::OPT_compatibility__version)) ||
4763 (A = Args.getLastArg(options::OPT_current__version)) ||
4764 (A = Args.getLastArg(options::OPT_install__name)))
4768 Args.AddLastArg(CmdArgs, options::OPT_force__flat__namespace);
4769 Args.AddLastArg(CmdArgs, options::OPT_keep__private__externs);
4770 Args.AddLastArg(CmdArgs, options::OPT_private__bundle);
4775 if ((A = Args.getLastArg(options::OPT_bundle)) ||
4776 (A = Args.getLastArg(options::OPT_bundle__loader)) ||
4777 (A = Args.getLastArg(options::OPT_client__name)) ||
4778 (A = Args.getLastArg(options::OPT_force__flat__namespace)) ||
4779 (A = Args.getLastArg(options::OPT_keep__private__externs)) ||
4780 (A = Args.getLastArg(options::OPT_private__bundle)))
4784 Args.AddAllArgsTranslated(CmdArgs, options::OPT_compatibility__version,
4786 Args.AddAllArgsTranslated(CmdArgs, options::OPT_current__version,
4791 Args.AddAllArgsTranslated(CmdArgs, options::OPT_install__name,
4795 Args.AddLastArg(CmdArgs, options::OPT_all__load);
4796 Args.AddAllArgs(CmdArgs, options::OPT_allowable__client);
4797 Args.AddLastArg(CmdArgs, options::OPT_bind__at__load);
4799 Args.AddLastArg(CmdArgs, options::OPT_arch__errors__fatal);
4800 Args.AddLastArg(CmdArgs, options::OPT_dead__strip);
4801 Args.AddLastArg(CmdArgs, options::OPT_no__dead__strip__inits__and__terms);
4802 Args.AddAllArgs(CmdArgs, options::OPT_dylib__file);
4803 Args.AddLastArg(CmdArgs, options::OPT_dynamic);
4804 Args.AddAllArgs(CmdArgs, options::OPT_exported__symbols__list);
4805 Args.AddLastArg(CmdArgs, options::OPT_flat__namespace);
4806 Args.AddAllArgs(CmdArgs, options::OPT_force__load);
4807 Args.AddAllArgs(CmdArgs, options::OPT_headerpad__max__install__names);
4808 Args.AddAllArgs(CmdArgs, options::OPT_image__base);
4809 Args.AddAllArgs(CmdArgs, options::OPT_init);
4821 if (Args.hasArg(options::OPT_mios_simulator_version_min_EQ))
4829 Args.AddLastArg(CmdArgs, options::OPT_nomultidefs);
4830 Args.AddLastArg(CmdArgs, options::OPT_multi__module);
4831 Args.AddLastArg(CmdArgs, options::OPT_single__module);
4832 Args.AddAllArgs(CmdArgs, options::OPT_multiply__defined);
4833 Args.AddAllArgs(CmdArgs, options::OPT_multiply__defined__unused);
4835 if (const Arg *A = Args.getLastArg(options::OPT_fpie, options::OPT_fPIE,
4836 options::OPT_fno_pie,
4837 options::OPT_fno_PIE)) {
4838 if (A->getOption().matches(options::OPT_fpie) ||
4839 A->getOption().matches(options::OPT_fPIE))
4845 Args.AddLastArg(CmdArgs, options::OPT_prebind);
4846 Args.AddLastArg(CmdArgs, options::OPT_noprebind);
4847 Args.AddLastArg(CmdArgs, options::OPT_nofixprebinding);
4848 Args.AddLastArg(CmdArgs, options::OPT_prebind__all__twolevel__modules);
4849 Args.AddLastArg(CmdArgs, options::OPT_read__only__relocs);
4850 Args.AddAllArgs(CmdArgs, options::OPT_sectcreate);
4851 Args.AddAllArgs(CmdArgs, options::OPT_sectorder);
4852 Args.AddAllArgs(CmdArgs, options::OPT_seg1addr);
4853 Args.AddAllArgs(CmdArgs, options::OPT_segprot);
4854 Args.AddAllArgs(CmdArgs, options::OPT_segaddr);
4855 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__only__addr);
4856 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__write__addr);
4857 Args.AddAllArgs(CmdArgs, options::OPT_seg__addr__table);
4858 Args.AddAllArgs(CmdArgs, options::OPT_seg__addr__table__filename);
4859 Args.AddAllArgs(CmdArgs, options::OPT_sub__library);
4860 Args.AddAllArgs(CmdArgs, options::OPT_sub__umbrella);
4868 } else if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) {
4873 Args.AddLastArg(CmdArgs, options::OPT_twolevel__namespace);
4874 Args.AddLastArg(CmdArgs, options::OPT_twolevel__namespace__hints);
4875 Args.AddAllArgs(CmdArgs, options::OPT_umbrella);
4876 Args.AddAllArgs(CmdArgs, options::OPT_undefined);
4877 Args.AddAllArgs(CmdArgs, options::OPT_unexported__symbols__list);
4878 Args.AddAllArgs(CmdArgs, options::OPT_weak__reference__mismatches);
4879 Args.AddLastArg(CmdArgs, options::OPT_X_Flag);
4880 Args.AddAllArgs(CmdArgs, options::OPT_y);
4881 Args.AddLastArg(CmdArgs, options::OPT_w);
4882 Args.AddAllArgs(CmdArgs, options::OPT_pagezero__size);
4883 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__);
4884 Args.AddLastArg(CmdArgs, options::OPT_seglinkedit);
4885 Args.AddLastArg(CmdArgs, options::OPT_noseglinkedit);
4886 Args.AddAllArgs(CmdArgs, options::OPT_sectalign);
4887 Args.AddAllArgs(CmdArgs, options::OPT_sectobjectsymbols);
4888 Args.AddAllArgs(CmdArgs, options::OPT_segcreate);
4889 Args.AddLastArg(CmdArgs, options::OPT_whyload);
4890 Args.AddLastArg(CmdArgs, options::OPT_whatsloaded);
4891 Args.AddAllArgs(CmdArgs, options::OPT_dylinker__install__name);
4892 Args.AddLastArg(CmdArgs, options::OPT_dylinker);
4893 Args.AddLastArg(CmdArgs, options::OPT_Mach);
4909 if (Args.hasArg(options::OPT_ccc_arcmt_check,
4910 options::OPT_ccc_arcmt_migrate)) {
4924 Args.AddAllArgs(CmdArgs, options::OPT_d_Flag);
4925 Args.AddAllArgs(CmdArgs, options::OPT_s);
4926 Args.AddAllArgs(CmdArgs, options::OPT_t);
4927 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
4928 Args.AddAllArgs(CmdArgs, options::OPT_u_Group);
4929 Args.AddLastArg(CmdArgs, options::OPT_e);
4930 Args.AddAllArgs(CmdArgs, options::OPT_r);
4935 if (Args.hasArg(options::OPT_ObjC) || Args.hasArg(options::OPT_ObjCXX))
4941 if (!Args.hasArg(options::OPT_nostdlib) &&
4942 !Args.hasArg(options::OPT_nostartfiles)) {
4944 if (Args.hasArg(options::OPT_dynamiclib)) {
4959 if (Args.hasArg(options::OPT_bundle)) {
4960 if (!Args.hasArg(options::OPT_static)) {
4974 if (Args.hasArg(options::OPT_pg) &&
4976 if (Args.hasArg(options::OPT_static) ||
4977 Args.hasArg(options::OPT_object) ||
4978 Args.hasArg(options::OPT_preload)) {
4994 if (Args.hasArg(options::OPT_static) ||
4995 Args.hasArg(options::OPT_object) ||
4996 Args.hasArg(options::OPT_preload)) {
5024 Args.hasArg(options::OPT_shared_libgcc) &&
5032 Args.AddAllArgs(CmdArgs, options::OPT_L);
5034 if (Args.hasArg(options::OPT_fopenmp))
5041 !Args.hasArg(options::OPT_nostdlib) &&
5042 !Args.hasArg(options::OPT_nodefaultlibs)) {
5068 if (Args.hasArg(options::OPT_fnested_functions))
5071 if (!Args.hasArg(options::OPT_nostdlib) &&
5072 !Args.hasArg(options::OPT_nodefaultlibs)) {
5082 if (!Args.hasArg(options::OPT_nostdlib) &&
5083 !Args.hasArg(options::OPT_nostartfiles)) {
5087 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
5088 Args.AddAllArgs(CmdArgs, options::OPT_F);
5169 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
5170 options::OPT_Xassembler);
5216 if ((!Args.hasArg(options::OPT_nostdlib)) &&
5217 (!Args.hasArg(options::OPT_shared))) {
5222 if (Args.hasArg(options::OPT_static)) {
5227 if (Args.hasArg(options::OPT_shared)) {
5242 if (!Args.hasArg(options::OPT_nostdlib) &&
5243 !Args.hasArg(options::OPT_nostartfiles)) {
5244 if (!Args.hasArg(options::OPT_shared)) {
5260 Args.AddAllArgs(CmdArgs, options::OPT_L);
5261 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
5262 Args.AddAllArgs(CmdArgs, options::OPT_e);
5263 Args.AddAllArgs(CmdArgs, options::OPT_r);
5267 if (!Args.hasArg(options::OPT_nostdlib) &&
5268 !Args.hasArg(options::OPT_nodefaultlibs)) {
5272 if (!Args.hasArg(options::OPT_shared)) {
5279 if (!Args.hasArg(options::OPT_nostdlib) &&
5280 !Args.hasArg(options::OPT_nostartfiles)) {
5299 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
5300 options::OPT_Xassembler);
5323 if ((!Args.hasArg(options::OPT_nostdlib)) &&
5324 (!Args.hasArg(options::OPT_shared))) {
5329 if (Args.hasArg(options::OPT_static)) {
5335 if (Args.hasArg(options::OPT_shared)) {
5350 if (!Args.hasArg(options::OPT_nostdlib) &&
5351 !Args.hasArg(options::OPT_nostartfiles)) {
5352 if (!Args.hasArg(options::OPT_shared)) {
5371 Args.AddAllArgs(CmdArgs, options::OPT_L);
5372 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
5373 Args.AddAllArgs(CmdArgs, options::OPT_e);
5377 if (!Args.hasArg(options::OPT_nostdlib) &&
5378 !Args.hasArg(options::OPT_nodefaultlibs)) {
5383 if (Args.hasArg(options::OPT_pthread))
5385 if (!Args.hasArg(options::OPT_shared))
5390 if (!Args.hasArg(options::OPT_nostdlib) &&
5391 !Args.hasArg(options::OPT_nostartfiles)) {
5392 if (!Args.hasArg(options::OPT_shared))
5432 Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
5433 options::OPT_fpic, options::OPT_fno_pic,
5434 options::OPT_fPIE, options::OPT_fno_PIE,
5435 options::OPT_fpie, options::OPT_fno_pie);
5437 (LastPICArg->getOption().matches(options::OPT_fPIC) ||
5438 LastPICArg->getOption().matches(options::OPT_fpic) ||
5439 LastPICArg->getOption().matches(options::OPT_fPIE) ||
5440 LastPICArg->getOption().matches(options::OPT_fpie))) {
5445 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
5446 options::OPT_Xassembler);
5471 Args.ClaimAllArgs(options::OPT_g_Group);
5473 Args.ClaimAllArgs(options::OPT_emit_llvm);
5474 // and for "clang -w foo.o -o foo". Other warning options are already
5476 Args.ClaimAllArgs(options::OPT_w);
5483 if ((!Args.hasArg(options::OPT_nostdlib)) &&
5484 (!Args.hasArg(options::OPT_shared))) {
5489 if (Args.hasArg(options::OPT_static)) {
5492 if (Args.hasArg(options::OPT_rdynamic))
5496 if (Args.hasArg(options::OPT_shared)) {
5504 if (Args.hasArg(options::OPT_nopie))
5514 if (!Args.hasArg(options::OPT_nostdlib) &&
5515 !Args.hasArg(options::OPT_nostartfiles)) {
5516 if (!Args.hasArg(options::OPT_shared)) {
5517 if (Args.hasArg(options::OPT_pg))
5537 Args.AddAllArgs(CmdArgs, options::OPT_L);
5538 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
5539 Args.AddAllArgs(CmdArgs, options::OPT_e);
5540 Args.AddAllArgs(CmdArgs, options::OPT_s);
5541 Args.AddAllArgs(CmdArgs, options::OPT_t);
5542 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
5543 Args.AddAllArgs(CmdArgs, options::OPT_r);
5547 if (!Args.hasArg(options::OPT_nostdlib) &&
5548 !Args.hasArg(options::OPT_nodefaultlibs)) {
5551 if (Args.hasArg(options::OPT_pg))
5561 if (Args.hasArg(options::OPT_pthread)) {
5562 if (!Args.hasArg(options::OPT_shared) &&
5563 Args.hasArg(options::OPT_pg))
5569 if (!Args.hasArg(options::OPT_shared)) {
5570 if (Args.hasArg(options::OPT_pg))
5579 if (!Args.hasArg(options::OPT_nostdlib) &&
5580 !Args.hasArg(options::OPT_nostartfiles)) {
5581 if (!Args.hasArg(options::OPT_shared))
5601 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
5602 options::OPT_Xassembler);
5626 if ((!Args.hasArg(options::OPT_nostdlib)) &&
5627 (!Args.hasArg(options::OPT_shared))) {
5632 if (Args.hasArg(options::OPT_static)) {
5635 if (Args.hasArg(options::OPT_rdynamic))
5639 if (Args.hasArg(options::OPT_shared)) {
5654 if (!Args.hasArg(options::OPT_nostdlib) &&
5655 !Args.hasArg(options::OPT_nostartfiles)) {
5656 if (!Args.hasArg(options::OPT_shared)) {
5657 if (Args.hasArg(options::OPT_pg))
5671 Args.AddAllArgs(CmdArgs, options::OPT_L);
5672 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
5673 Args.AddAllArgs(CmdArgs, options::OPT_e);
5677 if (!Args.hasArg(options::OPT_nostdlib) &&
5678 !Args.hasArg(options::OPT_nodefaultlibs)) {
5681 if (Args.hasArg(options::OPT_pg))
5687 if (Args.hasArg(options::OPT_pthread)) {
5688 if (!Args.hasArg(options::OPT_shared) &&
5689 Args.hasArg(options::OPT_pg))
5695 if (!Args.hasArg(options::OPT_shared)) {
5696 if (Args.hasArg(options::OPT_pg))
5719 if (!Args.hasArg(options::OPT_nostdlib) &&
5720 !Args.hasArg(options::OPT_nostartfiles)) {
5721 if (!Args.hasArg(options::OPT_shared))
5767 Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
5768 options::OPT_fpic, options::OPT_fno_pic,
5769 options::OPT_fPIE, options::OPT_fno_PIE,
5770 options::OPT_fpie, options::OPT_fno_pie);
5772 (LastPICArg->getOption().matches(options::OPT_fPIC) ||
5773 LastPICArg->getOption().matches(options::OPT_fpic) ||
5774 LastPICArg->getOption().matches(options::OPT_fPIE) ||
5775 LastPICArg->getOption().matches(options::OPT_fpie))) {
5797 Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
5798 options::OPT_fpic, options::OPT_fno_pic,
5799 options::OPT_fPIE, options::OPT_fno_PIE,
5800 options::OPT_fpie, options::OPT_fno_pie);
5802 (LastPICArg->getOption().matches(options::OPT_fPIC) ||
5803 LastPICArg->getOption().matches(options::OPT_fpic) ||
5804 LastPICArg->getOption().matches(options::OPT_fPIE) ||
5805 LastPICArg->getOption().matches(options::OPT_fpie))) {
5810 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
5811 options::OPT_Xassembler);
5838 Args.ClaimAllArgs(options::OPT_g_Group);
5840 Args.ClaimAllArgs(options::OPT_emit_llvm);
5841 // and for "clang -w foo.o -o foo". Other warning options are already
5843 Args.ClaimAllArgs(options::OPT_w);
5848 if (Args.hasArg(options::OPT_pie))
5852 if (Args.hasArg(options::OPT_static)) {
5855 if (Args.hasArg(options::OPT_rdynamic))
5857 if (Args.hasArg(options::OPT_shared)) {
5892 if (!Args.hasArg(options::OPT_nostdlib) &&
5893 !Args.hasArg(options::OPT_nostartfiles)) {
5895 if (!Args.hasArg(options::OPT_shared)) {
5896 if (Args.hasArg(options::OPT_pg))
5898 else if (Args.hasArg(options::OPT_pie))
5909 if (Args.hasArg(options::OPT_static))
5911 else if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
5919 Args.AddAllArgs(CmdArgs, options::OPT_L);
5924 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
5925 Args.AddAllArgs(CmdArgs, options::OPT_e);
5926 Args.AddAllArgs(CmdArgs, options::OPT_s);
5927 Args.AddAllArgs(CmdArgs, options::OPT_t);
5928 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
5929 Args.AddAllArgs(CmdArgs, options::OPT_r);
5953 if (!Args.hasArg(options::OPT_nostdlib) &&
5954 !Args.hasArg(options::OPT_nodefaultlibs)) {
5957 if (Args.hasArg(options::OPT_pg))
5964 if (Args.hasArg(options::OPT_pg))
5968 if (Args.hasArg(options::OPT_static)) {
5970 } else if (Args.hasArg(options::OPT_pg)) {
5978 if (Args.hasArg(options::OPT_pthread)) {
5979 if (Args.hasArg(options::OPT_pg))
5985 if (Args.hasArg(options::OPT_pg)) {
5986 if (Args.hasArg(options::OPT_shared))
5996 if (Args.hasArg(options::OPT_static)) {
5998 } else if (Args.hasArg(options::OPT_pg)) {
6007 if (!Args.hasArg(options::OPT_nostdlib) &&
6008 !Args.hasArg(options::OPT_nostartfiles)) {
6009 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
6062 Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
6063 options::OPT_fpic, options::OPT_fno_pic,
6064 options::OPT_fPIE, options::OPT_fno_PIE,
6065 options::OPT_fpie, options::OPT_fno_pie);
6067 (LastPICArg->getOption().matches(options::OPT_fPIC) ||
6068 LastPICArg->getOption().matches(options::OPT_fpic) ||
6069 LastPICArg->getOption().matches(options::OPT_fPIE) ||
6070 LastPICArg->getOption().matches(options::OPT_fpie))) {
6075 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
6076 options::OPT_Xassembler);
6102 if (Args.hasArg(options::OPT_static)) {
6105 if (Args.hasArg(options::OPT_rdynamic))
6108 if (Args.hasArg(options::OPT_shared)) {
6130 if (!Args.hasArg(options::OPT_nostdlib) &&
6131 !Args.hasArg(options::OPT_nostartfiles)) {
6132 if (!Args.hasArg(options::OPT_shared)) {
6147 Args.AddAllArgs(CmdArgs, options::OPT_L);
6148 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
6149 Args.AddAllArgs(CmdArgs, options::OPT_e);
6150 Args.AddAllArgs(CmdArgs, options::OPT_s);
6151 Args.AddAllArgs(CmdArgs, options::OPT_t);
6152 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
6153 Args.AddAllArgs(CmdArgs, options::OPT_r);
6166 if (!Args.hasArg(options::OPT_nostdlib) &&
6167 !Args.hasArg(options::OPT_nodefaultlibs)) {
6172 if (Args.hasArg(options::OPT_pthread))
6177 if (Args.hasArg(options::OPT_static)) {
6193 if (!Args.hasArg(options::OPT_nostdlib) &&
6194 !Args.hasArg(options::OPT_nostartfiles)) {
6195 if (!Args.hasArg(options::OPT_shared))
6256 Args.AddLastArg(CmdArgs, options::OPT_march_EQ);
6257 Args.AddLastArg(CmdArgs, options::OPT_mcpu_EQ);
6258 Args.AddLastArg(CmdArgs, options::OPT_mfpu_EQ);
6279 if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) {
6284 if (Arg *A = Args.getLastArg(options::OPT_mfp32, options::OPT_mfp64)) {
6285 if (A->getOption().matches(options::OPT_mfp32))
6291 Args.AddLastArg(CmdArgs, options::OPT_mips16, options::OPT_mno_mips16);
6292 Args.AddLastArg(CmdArgs, options::OPT_mmicromips,
6293 options::OPT_mno_micromips);
6294 Args.AddLastArg(CmdArgs, options::OPT_mdsp, options::OPT_mno_dsp);
6295 Args.AddLastArg(CmdArgs, options::OPT_mdspr2, options::OPT_mno_dspr2);
6297 if (Arg *A = Args.getLastArg(options::OPT_mmsa, options::OPT_mno_msa)) {
6299 // support -mmsa / -mno-msa options.
6300 if (A->getOption().matches(options::OPT_mmsa))
6313 Arg *LastPICArg = Args.getLastArg(options::OPT_fPIC, options::OPT_fno_PIC,
6314 options::OPT_fpic, options::OPT_fno_pic,
6315 options::OPT_fPIE, options::OPT_fno_PIE,
6316 options::OPT_fpie, options::OPT_fno_pie);
6318 (LastPICArg->getOption().matches(options::OPT_fPIC) ||
6319 LastPICArg->getOption().matches(options::OPT_fpic) ||
6320 LastPICArg->getOption().matches(options::OPT_fPIE) ||
6321 LastPICArg->getOption().matches(options::OPT_fpie))) {
6326 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
6327 options::OPT_Xassembler);
6345 if (Args.hasArg(options::OPT_gsplit_dwarf) &&
6354 bool StaticLibgcc = Args.hasArg(options::OPT_static_libgcc) ||
6355 Args.hasArg(options::OPT_static);
6372 else if (!Args.hasArg(options::OPT_shared) && D.CCCIsCXX())
6385 Arg *A = Args.getLastArg(options::OPT_mabi_EQ);
6437 !Args.hasArg(options::OPT_shared) &&
6438 (Args.hasArg(options::OPT_pie) || Sanitize.hasZeroBaseShadow());
6443 Args.ClaimAllArgs(options::OPT_g_Group);
6445 Args.ClaimAllArgs(options::OPT_emit_llvm);
6446 // and for "clang -w foo.o -o foo". Other warning options are already
6448 Args.ClaimAllArgs(options::OPT_w);
6456 if (Args.hasArg(options::OPT_rdynamic))
6459 if (Args.hasArg(options::OPT_s))
6467 if (!Args.hasArg(options::OPT_static)) {
6508 if (Args.hasArg(options::OPT_static)) {
6514 } else if (Args.hasArg(options::OPT_shared)) {
6523 (!Args.hasArg(options::OPT_static) &&
6524 !Args.hasArg(options::OPT_shared))) {
6533 if (!Args.hasArg(options::OPT_nostdlib) &&
6534 !Args.hasArg(options::OPT_nostartfiles)) {
6537 if (!Args.hasArg(options::OPT_shared)){
6538 if (Args.hasArg(options::OPT_pg))
6552 if (Args.hasArg(options::OPT_static))
6554 else if (Args.hasArg(options::OPT_shared))
6566 Args.AddAllArgs(CmdArgs, options::OPT_L);
6595 if (Args.hasArg(options::OPT_Z_Xlinker__no_demangle))
6620 !Args.hasArg(options::OPT_nostdlib) &&
6621 !Args.hasArg(options::OPT_nodefaultlibs)) {
6622 bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
6623 !Args.hasArg(options::OPT_static);
6632 if (!Args.hasArg(options::OPT_nostdlib)) {
6633 if (!Args.hasArg(options::OPT_nodefaultlibs)) {
6634 if (Args.hasArg(options::OPT_static))
6637 bool OpenMP = Args.hasArg(options::OPT_fopenmp);
6648 if (Args.hasArg(options::OPT_pthread) ||
6649 Args.hasArg(options::OPT_pthreads) || OpenMP)
6654 if (Args.hasArg(options::OPT_static))
6660 if (!Args.hasArg(options::OPT_nostartfiles)) {
6662 if (Args.hasArg(options::OPT_shared))
6685 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
6686 options::OPT_Xassembler);
6717 if (!Args.hasArg(options::OPT_nostdlib) &&
6718 !Args.hasArg(options::OPT_nostartfiles)) {
6725 Args.AddAllArgs(CmdArgs, options::OPT_L);
6726 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
6727 Args.AddAllArgs(CmdArgs, options::OPT_e);
6733 if (!Args.hasArg(options::OPT_nostdlib) &&
6734 !Args.hasArg(options::OPT_nodefaultlibs)) {
6741 if (!Args.hasArg(options::OPT_nostdlib) &&
6742 !Args.hasArg(options::OPT_nostartfiles)) {
6743 if (Args.hasArg(options::OPT_pthread))
6772 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
6773 options::OPT_Xassembler);
6805 if (Args.hasArg(options::OPT_static)) {
6808 if (Args.hasArg(options::OPT_rdynamic))
6810 if (Args.hasArg(options::OPT_shared))
6833 if (!Args.hasArg(options::OPT_nostdlib) &&
6834 !Args.hasArg(options::OPT_nostartfiles)) {
6835 if (!Args.hasArg(options::OPT_shared)) {
6836 if (Args.hasArg(options::OPT_pg))
6840 if (Args.hasArg(options::OPT_pie))
6850 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
6858 Args.AddAllArgs(CmdArgs, options::OPT_L);
6859 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
6860 Args.AddAllArgs(CmdArgs, options::OPT_e);
6864 if (!Args.hasArg(options::OPT_nostdlib) &&
6865 !Args.hasArg(options::OPT_nodefaultlibs)) {
6873 if (!Args.hasArg(options::OPT_static)) {
6888 if (Args.hasArg(options::OPT_pthread))
6891 if (!Args.hasArg(options::OPT_nolibc)) {
6896 if (Args.hasArg(options::OPT_static) ||
6897 Args.hasArg(options::OPT_static_libgcc)) {
6901 if (Args.hasArg(options::OPT_shared_libgcc)) {
6903 if (!Args.hasArg(options::OPT_shared))
6913 if (Args.hasArg(options::OPT_shared)) {
6921 if (!Args.hasArg(options::OPT_nostdlib) &&
6922 !Args.hasArg(options::OPT_nostartfiles)) {
6923 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
6954 if (!Args.hasArg(options::OPT_nostdlib) &&
6955 !Args.hasArg(options::OPT_nostartfiles) &&
6962 bool DLL = Args.hasArg(options::OPT__SLASH_LD, options::OPT__SLASH_LDd);
6987 Args.AddAllArgValues(CmdArgs, options::OPT_l);
6988 Args.AddAllArgValues(CmdArgs, options::OPT__SLASH_link);
7060 Args.AddAllArgs(CmdArgs, options::OPT_D, options::OPT_U);
7061 Args.AddAllArgs(CmdArgs, options::OPT_I);
7064 if (Arg *A = Args.getLastArg(options::OPT_O, options::OPT_O0)) {
7065 if (A->getOption().getID() == options::OPT_O0) {
7077 // FIXME: How can we ensure this stays in sync with relevant clang-cl options?
7079 if (Arg *A = Args.getLastArg(options::OPT_frtti, options::OPT_fno_rtti))
7080 CmdArgs.push_back(A->getOption().getID() == options::OPT_frtti ? "/GR"
7082 if (Args.hasArg(options::OPT_fsyntax_only))
7085 std::vector<std::string> Includes = Args.getAllArgValues(options::OPT_include);
7090 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_LD);
7091 Args.AddAllArgs(CmdArgs, options::OPT__SLASH_LDd);
7094 if (Arg *A = Args.getLastArg(options::OPT__SLASH_MD, options::OPT__SLASH_MDd,
7095 options::OPT__SLASH_MT, options::OPT__SLASH_MTd))
7137 if (Args.hasArg(options::OPT_g_Group)) {
7141 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
7142 options::OPT_Xassembler);