Home | History | Annotate | Download | only in Driver

Lines Matching refs:Args

52 static void CheckPreprocessingOptions(const Driver &D, const ArgList &Args) {
53 if (Arg *A = Args.getLastArg(options::OPT_C, options::OPT_CC))
54 if (!Args.hasArg(options::OPT_E) && !D.CCCIsCPP)
56 << A->getAsString(Args) << "-E";
61 static void CheckCodeGenerationOptions(const Driver &D, const ArgList &Args) {
63 if (Args.hasArg(options::OPT_static))
64 if (const Arg *A = Args.getLastArg(options::OPT_dynamic,
67 << A->getAsString(Args) << "-static";
100 const InputInfoList &Inputs, const ArgList &Args,
106 Args.AddAllArgValues(CmdArgs, options::OPT_Zlinker_input);
133 TC.AddCXXStdlibLibArgs(Args, CmdArgs);
135 TC.AddCCKextLibArgs(Args, CmdArgs);
137 A.renderAsInput(Args, CmdArgs);
143 static bool isObjCAutoRefCount(const ArgList &Args) {
144 return Args.hasFlag(options::OPT_fobjc_arc, options::OPT_fno_objc_arc, false);
147 static void addProfileRT(const ToolChain &TC, const ArgList &Args,
150 if (!(Args.hasArg(options::OPT_fprofile_arcs) ||
151 Args.hasArg(options::OPT_fprofile_generate) ||
152 Args.hasArg(options::OPT_fcreate_profile) ||
153 Args.hasArg(options::OPT_coverage)))
171 CmdArgs.push_back(Args.MakeArgString(ProfileRT));
174 static void AddIncludeDirectoryList(const ArgList &Args,
192 CmdArgs.push_back(Args.MakeArgString(Dirs.substr(0, Delim)));
202 CmdArgs.push_back(Args.MakeArgString(Dirs));
207 const ArgList &Args,
213 CheckPreprocessingOptions(D, Args);
215 Args.AddLastArg(CmdArgs, options::OPT_C);
216 Args.AddLastArg(CmdArgs, options::OPT_CC);
219 if ((A = Args.getLastArg(options::OPT_M, options::OPT_MM)) ||
220 (A = Args.getLastArg(options::OPT_MD)) ||
221 (A = Args.getLastArg(options::OPT_MMD))) {
226 } else if (Arg *MF = Args.getLastArg(options::OPT_MF)) {
227 DepFile = MF->getValue(Args);
232 DepFile = darwin::CC1::getDependencyFileName(Args, Inputs);
238 if (!Args.hasArg(options::OPT_MT) && !Args.hasArg(options::OPT_MQ)) {
243 Arg *OutputOpt = Args.getLastArg(options::OPT_o);
245 DepTarget = OutputOpt->getValue(Args);
252 DepTarget = Args.MakeArgString(llvm::sys::path::filename(P));
258 CmdArgs.push_back(Args.MakeArgString(Quoted));
266 if (Args.hasArg(options::OPT_MG)) {
273 Args.AddLastArg(CmdArgs, options::OPT_MP);
275 // Convert all -MQ <target> args to -MT <quoted target>
276 for (arg_iterator it = Args.filtered_begin(options::OPT_MT,
278 ie = Args.filtered_end(); it != ie; ++it) {
285 QuoteTarget(A->getValue(Args), Quoted);
286 CmdArgs.push_back(Args.MakeArgString(Quoted));
290 A->render(Args, CmdArgs);
300 for (arg_iterator it = Args.filtered_begin(options::OPT_clang_i_Group),
301 ie = Args.filtered_end(); it != ie; ++it) {
313 llvm::sys::Path P(A->getValue(Args));
348 CmdArgs.push_back(Args.MakeArgString(P.str()));
353 << P.str() << A->getAsString(Args);
360 A->render(Args, CmdArgs);
363 Args.AddAllArgs(CmdArgs, options::OPT_D, options::OPT_U);
364 Args.AddAllArgs(CmdArgs, options::OPT_I_Group, options::OPT_F,
371 = types::isObjC(InputType) && isObjCAutoRefCount(Args);
372 getToolChain().AddClangCXXStdlibIncludeArgs(Args, CmdArgs,
374 Args.AddAllArgs(CmdArgs, options::OPT_stdlib_EQ);
383 Args.AddAllArgValues(CmdArgs, options::OPT_Wp_COMMA,
387 if (Arg *A = Args.getLastArg(options::OPT_I_))
388 D.Diag(diag::err_drv_I_dash_not_supported) << A->getAsString(Args);
392 if (Arg *A = Args.getLastArg(options::OPT__sysroot_EQ)) {
393 if (!Args.hasArg(options::OPT_isysroot)) {
395 CmdArgs.push_back(A->getValue(Args));
401 if (Arg *A = Args.getLastArg(options::OPT_fmodule_cache_path)) {
403 A->render(Args, CmdArgs);
410 CmdArgs.push_back(Args.MakeArgString(DefaultModuleCache));
413 Args.AddAllArgs(CmdArgs, options::OPT_fauto_module_import);
418 AddIncludeDirectoryList(Args, CmdArgs, "-I", ::getenv("CPATH"));
420 AddIncludeDirectoryList(Args, CmdArgs, "-c-isystem",
423 AddIncludeDirectoryList(Args, CmdArgs, "-cxx-isystem",
426 AddIncludeDirectoryList(Args, CmdArgs, "-objc-isystem",
429 AddIncludeDirectoryList(Args, CmdArgs, "-objcxx-isystem",
436 static const char *getARMTargetCPU(const ArgList &Args,
441 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
442 return A->getValue(Args);
445 if (Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
447 MArch = A->getValue(Args);
516 void Clang::AddARMTargetArgs(const ArgList &Args,
526 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) {
527 ABIName = A->getValue(Args);
546 CmdArgs.push_back(getARMTargetCPU(Args, Triple));
551 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
559 FloatABI = A->getValue(Args);
562 << A->getAsString(Args);
579 getLLVMArchSuffixForARM(getARMTargetCPU(Args, Triple));
653 if (const Arg *A = Args.getLastArg(options::OPT_mfpu_EQ)) {
654 StringRef FPU = A->getValue(Args);
675 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args);
700 if (Arg *A = Args.getLastArg(options::OPT_mglobal_merge,
740 void Clang::AddMIPSTargetArgs(const ArgList &Args,
748 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ)) {
749 CPUName = A->getValue(Args);
753 ArchName = Args.MakeArgString(getToolChain().getArchName());
762 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ))
763 ABIName = A->getValue(Args);
772 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
798 void Clang::AddSparcTargetArgs(const ArgList &Args,
802 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
803 StringRef MArch = A->getValue(Args);
810 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
842 void Clang::AddX86TargetArgs(const ArgList &Args,
844 if (!Args.hasFlag(options::OPT_mred_zone,
847 Args.hasArg(options::OPT_mkernel) ||
848 Args.hasArg(options::OPT_fapple_kext))
851 if (Args.hasFlag(options::OPT_msoft_float,
857 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
858 if (StringRef(A->getValue(Args)) == "native") {
866 CPUName = Args.MakeArgString(CPU);
868 CPUName = A->getValue(Args);
920 for (arg_iterator it = Args.filtered_begin(options::OPT_m_x86_Features_Group),
921 ie = Args.filtered_end(); it != ie; ++it) {
937 Features.push_back(Args.MakeArgString((IsNegative ? "-" : "+") + Name));
970 static void addExceptionArgs(const ArgList &Args, types::ID InputType,
984 if (Arg *A = Args.getLastArg(options::OPT_fexceptions,
1004 Args.hasFlag(options::OPT_fobjc_exceptions,
1016 if (Arg *A = Args.getLastArg(options::OPT_fcxx_exceptions,
1037 static bool ShouldDisableCFI(const ArgList &Args,
1046 bool HasStatic = (Args.hasArg(options::OPT_mkernel) ||
1047 Args.hasArg(options::OPT_static) ||
1048 Args.hasArg(options::OPT_fapple_kext));
1050 bool UseIntegratedAs = Args.hasFlag(options::OPT_integrated_as,
1053 bool UseCFI = Args.hasFlag(options::OPT_fdwarf2_cfi_asm,
1063 static bool ShouldDisableDwarfDirectory(const ArgList &Args,
1066 bool UseIntegratedAs = Args.hasFlag(options::OPT_integrated_as,
1069 bool UseDwarfDirectory = Args.hasFlag(options::OPT_fdwarf_directory_asm,
1089 static bool UseRelaxAll(Compilation &C, const ArgList &Args) {
1092 if (Arg *A = Args.getLastArg(options::OPT_O_Group))
1106 return Args.hasFlag(options::OPT_mrelax_all, options::OPT_mno_relax_all,
1113 const ArgList &Args,
1115 bool KernelOrKext = Args.hasArg(options::OPT_mkernel,
1129 std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
1130 CmdArgs.push_back(Args.MakeArgString(TripleStr));
1145 if (UseRelaxAll(C, Args))
1150 for (arg_iterator it = Args.filtered_begin(options::OPT_Wa_COMMA,
1152 ie = Args.filtered_end(); it != ie; ++it) {
1157 StringRef Value = A->getValue(Args, i);
1176 (void) Args.hasArg(options::OPT_force__cpusubtype__ALL);
1220 CmdArgs.push_back(darwin::CC1::getBaseInputName(Args, Inputs));
1224 if (Args.hasArg(options::OPT_static))
1237 if (!Args.hasArg(options::OPT__analyzer_no_default_checks)) {
1252 if (Arg *A = Args.getLastArg(options::OPT__analyzer_output))
1253 CmdArgs.push_back(A->getValue(Args));
1263 Args.AddAllArgValues(CmdArgs, options::OPT_Xanalyzer);
1266 CheckCodeGenerationOptions(D, Args);
1278 bool PICEnabled = (Args.hasArg(options::OPT_fPIC) ||
1279 Args.hasArg(options::OPT_fpic) ||
1280 Args.hasArg(options::OPT_fPIE) ||
1281 Args.hasArg(options::OPT_fpie));
1282 bool PICDisabled = (Args.hasArg(options::OPT_mkernel) ||
1283 Args.hasArg(options::OPT_static));
1286 if (Args.hasArg(options::OPT_mdynamic_no_pic))
1306 CmdArgs.push_back(Args.hasArg(options::OPT_fPIC) ? "2" : "1");
1308 if (!Args.hasFlag(options::OPT_fmerge_all_constants,
1314 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) {
1316 CmdArgs.push_back(A->getValue(Args));
1319 if (Args.hasFlag(options::OPT_mrtd, options::OPT_mno_rtd, false))
1323 if (Args.hasFlag(options::OPT_fno_omit_frame_pointer,
1326 if (!Args.hasFlag(options::OPT_fzero_initialized_in_bss,
1329 if (!Args.hasFlag(options::OPT_fstrict_aliasing,
1337 if (Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm,
1339 Args.hasArg(options::OPT_dA))
1342 if (Args.hasArg(options::OPT_fdebug_pass_structure)) {
1346 if (Args.hasArg(options::OPT_fdebug_pass_arguments)) {
1361 if (Args.hasArg(options::OPT_mms_bitfields)) {
1369 Args.hasFlag(options::OPT_fasynchronous_unwind_tables,
1373 if (Args.hasFlag(options::OPT_funwind_tables, options::OPT_fno_unwind_tables,
1377 if (Arg *A = Args.getLastArg(options::OPT_flimited_precision_EQ)) {
1379 CmdArgs.push_back(A->getValue(Args));
1383 (void) Args.hasArg(options::OPT_mtune_EQ);
1385 if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) {
1387 CmdArgs.push_back(A->getValue(Args));
1397 AddARMTargetArgs(Args, CmdArgs, KernelOrKext);
1404 AddMIPSTargetArgs(Args, CmdArgs);
1408 Args, CmdArgs);
1413 AddX86TargetArgs(Args, CmdArgs);
1418 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
1420 CmdArgs.push_back(A->getValue(Args));
1424 if (Args.hasFlag(options::OPT_momit_leaf_frame_pointer,
1430 if (Args.hasFlag(options::OPT_fmath_errno,
1438 if (!Args.hasArg(options::OPT_fallow_unsupported)) {
1443 if ((Unsupported = Args.getLastArg(options::OPT_fapple_kext)) ||
1444 (Unsupported = Args.getLastArg(options::OPT_mkernel)))
1450 Args.AddAllArgs(CmdArgs, options::OPT_v);
1451 Args.AddLastArg(CmdArgs, options::OPT_H);
1457 Args.AddLastArg(CmdArgs, options::OPT_P);
1458 Args.AddLastArg(CmdArgs, options::OPT_print_ivar_layout);
1468 Args.ClaimAllArgs(options::OPT_g_Group);
1469 if (Arg *A = Args.getLastArg(options::OPT_g_Group))
1473 Args.AddAllArgs(CmdArgs, options::OPT_ffunction_sections);
1474 Args.AddAllArgs(CmdArgs, options::OPT_fdata_sections);
1476 Args.AddAllArgs(CmdArgs, options::OPT_finstrument_functions);
1478 if (Args.hasArg(options::OPT_ftest_coverage) ||
1479 Args.hasArg(options::OPT_coverage))
1481 if (Args.hasArg(options::OPT_fprofile_arcs) ||
1482 Args.hasArg(options::OPT_coverage))
1489 CmdArgs.push_back(Args.MakeArgString(Output.getFilename()));
1494 if (Args.hasArg(options::OPT_nostdinc)) {
1498 if (Args.hasArg(options::OPT_nostdlibinc))
1500 Args.AddLastArg(CmdArgs, options::OPT_nostdincxx);
1501 Args.AddLastArg(CmdArgs, options::OPT_nobuiltininc);
1508 Args.AddLastArg(CmdArgs, options::OPT_working_directory);
1510 if (!Args.hasArg(options::OPT_fno_objc_arc)) {
1511 if (const Arg *A = Args.getLastArg(options::OPT_ccc_arcmt_check,
1526 CmdArgs.push_back(A->getValue(Args));
1528 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_report_output);
1529 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_emit_arc_errors);
1540 AddPreprocessingOptions(D, Args, CmdArgs, Output, Inputs);
1546 Args.ClaimAllArgs(options::OPT_D);
1550 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
1554 A->getValue(Args)[0] == '\0')
1557 A->render(Args, CmdArgs);
1560 Args.AddAllArgs(CmdArgs, options::OPT_W_Group);
1561 Args.AddLastArg(CmdArgs, options::OPT_pedantic);
1562 Args.AddLastArg(CmdArgs, options::OPT_pedantic_errors);
1563 Args.AddLastArg(CmdArgs, options::OPT_w);
1570 if (Arg *Std = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi)) {
1577 Std->render(Args, CmdArgs);
1579 if (Arg *A = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi,
1582 A->render(Args, CmdArgs);
1591 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ,
1593 Args.AddLastArg(CmdArgs, options::OPT_trigraphs);
1598 if (Args.hasFlag(options::OPT_Wwrite_strings, options::OPT_Wno_write_strings,
1609 Args.hasFlag(options::OPT_Wdeprecated, options::OPT_Wno_deprecated,
1615 if (Arg *Asm = Args.getLastArg(options::OPT_fasm, options::OPT_fno_asm)) {
1622 if (ShouldDisableCFI(Args, getToolChain()))
1625 if (ShouldDisableDwarfDirectory(Args, getToolChain()))
1628 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_depth_)) {
1630 CmdArgs.push_back(A->getValue(Args));
1633 if (Arg *A = Args.getLastArg(options::OPT_Wlarge_by_value_copy_EQ,
1637 CmdArgs.push_back(A->getValue(Args));
1642 if (Args.hasArg(options::OPT__relocatable_pch))
1645 if (Arg *A = Args.getLastArg(options::OPT_fconstant_string_class_EQ)) {
1647 CmdArgs.push_back(A->getValue(Args));
1650 if (Arg *A = Args.getLastArg(options::OPT_ftabstop_EQ)) {
1652 CmdArgs.push_back(A->getValue(Args));
1656 if (Arg *A = Args.getLastArg(options::OPT_ferror_limit_EQ))
1657 CmdArgs.push_back(A->getValue(Args));
1661 if (Arg *A = Args.getLastArg(options::OPT_fmacro_backtrace_limit_EQ)) {
1663 CmdArgs.push_back(A->getValue(Args));
1666 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_backtrace_limit_EQ)) {
1668 CmdArgs.push_back(A->getValue(Args));
1673 if (Arg *A = Args.getLastArg(options::OPT_fmessage_length_EQ)) {
1674 CmdArgs.push_back(A->getValue(Args));
1679 CmdArgs.push_back(Args.MakeArgString(Twine(N)));
1682 if (const Arg *A = Args.getLastArg(options::OPT_fvisibility_EQ)) {
1684 CmdArgs.push_back(A->getValue(Args));
1687 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_inlines_hidden);
1690 if (KernelOrKext || Args.hasFlag(options::OPT_ffreestanding,
1696 Args.AddLastArg(CmdArgs, options::OPT_fcatch_undefined_behavior);
1697 Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls);
1698 Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions);
1699 Args.AddLastArg(CmdArgs, options::OPT_flimit_debug_info);
1701 Args.AddLastArg(CmdArgs, options::OPT_pg);
1704 if (!Args.hasFlag(options::OPT_flax_vector_conversions,
1708 if (Args.getLastArg(options::OPT_fapple_kext))
1711 Args.AddLastArg(CmdArgs, options::OPT_fobjc_sender_dependent_dispatch);
1712 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info);
1713 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_parseable_fixits);
1714 Args.AddLastArg(CmdArgs, options::OPT_ftime_report);
1715 Args.AddLastArg(CmdArgs, options::OPT_ftrapv);
1717 if (Arg *A = Args.getLastArg(options::OPT_ftrapv_handler_EQ)) {
1719 CmdArgs.push_back(A->getValue(Args));
1723 if (Arg *A = Args.getLastArg(options::OPT_ftrap_function_EQ)) {
1724 StringRef FuncName = A->getValue(Args);
1726 CmdArgs.push_back(Args.MakeArgString("-trap-func=" + FuncName));
1731 if (Arg *A = Args.getLastArg(options::OPT_fwrapv,
1735 } else if (Arg *A = Args.getLastArg(options::OPT_fstrict_overflow,
1740 Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings);
1741 Args.AddLastArg(CmdArgs, options::OPT_funroll_loops);
1743 Args.AddLastArg(CmdArgs, options::OPT_pthread);
1747 if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector,
1760 CmdArgs.push_back(Args.MakeArgString(Twine(StackProtectorLevel)));
1764 if (Args.hasArg(options::OPT_mstackrealign)) {
1772 if (Args.hasArg(options::OPT_mkernel)) {
1773 if (!Args.hasArg(options::OPT_fapple_kext) && types::isCXX(InputType))
1775 if (!Args.hasArg(options::OPT_fbuiltin))
1779 else if (!Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin))
1782 if (!Args.hasFlag(options::OPT_fassume_sane_operator_new,
1787 if (Args.hasFlag(options::OPT_fblocks, options::OPT_fno_blocks,
1789 (Args.hasArg(options::OPT_fgnu_runtime) &&
1790 Args.hasArg(options::OPT_fobjc_nonfragile_abi) &&
1791 !Args.hasArg(options::OPT_fno_blocks))) {
1794 if (!Args.hasArg(options::OPT_fgnu_runtime) &&
1800 if (Args.hasFlag(options::OPT_fno_access_control,
1806 if (Args.hasFlag(options::OPT_fno_elide_constructors,
1813 !Args.hasFlag(options::OPT_frtti, options::OPT_fno_rtti))
1818 if (Args.hasFlag(options::OPT_fshort_enums,
1823 if (!Args.hasFlag(options::OPT_fsigned_char, options::OPT_funsigned_char,
1828 if (!Args.hasFlag(options::OPT_fthreadsafe_statics,
1834 !Args
1840 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions,
1845 if (Args.hasFlag(options::OPT_fms_compatibility, options::OPT_fno_ms_compatibility,
1850 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions,
1852 Args.hasArg(options::OPT_fmsc_version)) {
1853 StringRef msc_ver = Args.getLastArgValue(options::OPT_fmsc_version);
1857 CmdArgs.push_back(Args.MakeArgString("-fmsc-version=" + msc_ver));
1862 if (Args.hasFlag(options::OPT_fborland_extensions,
1868 if (Args.hasFlag(options::OPT_fdelayed_template_parsing,
1875 if (Arg *A = Args.getLastArg(options::OPT_fgnu_keywords,
1877 A->render(Args, CmdArgs);
1879 if (Args.hasFlag(options::OPT_fgnu89_inline,
1889 if (Args.hasFlag(options::OPT_fnext_runtime, options::OPT_fgnu_runtime,
1911 if (Arg *A = Args.getLastArg(options::OPT_fobjc_abi_version_EQ)) {
1912 if (StringRef(A->getValue(Args)) == "1")
1914 else if (StringRef(A->getValue(Args)) == "2")
1916 else if (StringRef(A->getValue(Args)) == "3")
1919 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args);
1924 if (Args.hasFlag(options::OPT_fobjc_nonfragile_abi,
1934 if (Arg *A = Args.getLastArg(
1936 if (StringRef(A->getValue(Args)) == "1")
1938 else if (StringRef(A->getValue(Args)) == "2")
1942 << A->getAsString(Args);
1956 if (!Args.hasFlag(options::OPT_fobjc_legacy_dispatch,
1967 if (Args.hasFlag(options::OPT_fobjc_default_synthesize_properties,
1975 bool ARC = isObjCAutoRefCount(Args);
1981 if (Args.hasFlag(options::OPT_fobjc_arc_exceptions,
1994 const Arg *GCArg = Args.getLastArg(options::OPT_fobjc_gc_only);
1996 GCArg = Args.getLastArg(options::OPT_fobjc_gc);
2000 << GCArg->getAsString(Args);
2002 GCArg->render(Args, CmdArgs);
2006 << GCArg->getAsString(Args);
2010 // Add exception args.
2011 addExceptionArgs(Args, InputType, getToolChain().getTriple(),
2018 if (!Args.hasFlag(options::OPT_fassume_sane_operator_new,
2024 if (!Args.hasFlag(options::OPT_fconstant_cfstrings,
2026 !Args.hasFlag(options::OPT_mconstant_cfstrings,
2032 if (Arg *A = Args.getLastArg(options::OPT_fshort_wchar))
2033 A->render(Args, CmdArgs);
2040 if (Args.hasFlag(options::OPT_fpascal_strings,
2043 Args.hasFlag(options::OPT_mpascal_strings,
2050 if (Arg *A = Args.getLastArg(options::OPT_fpack_struct_EQ)) {
2052 CmdArgs.push_back(A->getValue(Args));
2053 } else if (Args.hasFlag(options::OPT_fpack_struct,
2059 if (Args.hasArg(options::OPT_mkernel) ||
2060 Args.hasArg(options::OPT_fapple_kext)) {
2061 if (!Args.hasArg(options::OPT_fcommon))
2066 else if (!Args.hasFlag(options::OPT_fcommon, options::OPT_fno_common))
2071 if (!Args.hasFlag(options::OPT_fsigned_bitfields,
2074 << Args.getLastArg(options::OPT_funsigned_bitfields)->getAsString(Args);
2077 if (!Args.hasFlag(options::OPT_ffor_scope,
2080 << Args.getLastArg(options::OPT_fno_for_scope)->getAsString(Args);
2083 if (!Args.hasFlag(options::OPT_fcaret_diagnostics,
2088 if (!Args.hasFlag(options::OPT_fdiagnostics_fixit_info,
2093 if (Args.hasFlag(options::OPT_fdiagnostics_show_name,
2098 if (Args.hasFlag(options::OPT_fdiagnostics_show_option,
2103 Args.getLastArg(options::OPT_fdiagnostics_show_category_EQ)) {
2105 CmdArgs.push_back(A->getValue(Args));
2109 Args.getLastArg(options::OPT_fdiagnostics_format_EQ)) {
2111 CmdArgs.push_back(A->getValue(Args));
2114 if (Arg *A = Args.getLastArg(
2126 if (Args.hasFlag(options::OPT_fcolor_diagnostics,
2131 if (!Args.hasFlag(options::OPT_fshow_source_location,
2135 if (!Args.hasFlag(options::OPT_fshow_column,
2140 if (!Args.hasFlag(options::OPT_fspell_checking,
2146 (void) Args.hasFlag(options::OPT_fasm_blocks, options::OPT_fno_asm_blocks,
2149 if (Arg *A = Args.getLastArg(options::OPT_fshow_overloads_EQ))
2150 A->render(Args, CmdArgs);
2154 if (Arg *A = Args.getLastArg(options::OPT_fdollars_in_identifiers,
2164 if (Arg *A = Args.getLastArg(options::OPT_funit_at_a_time,
2167 D.Diag(diag::warn_drv_clang_unsupported) << A->getAsString(Args);
2177 if (!Args.hasArg(options::OPT_fbuiltin_strcat))
2179 if (!Args.hasArg(options::OPT_fbuiltin_strcpy))
2185 if (Arg *A = Args.getLastArg(options::OPT_traditional,
2190 D.Diag(diag::err_drv_clang_unsupported) << A->getAsString(Args);
2193 Args.AddLastArg(CmdArgs, options::OPT_dM);
2194 Args.AddLastArg(CmdArgs, options::OPT_dD);
2198 Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
2199 for (arg_iterator it = Args.filtered_begin(options::OPT_mllvm),
2200 ie = Args.filtered_end(); it != ie; ++it) {
2205 if (StringRef((*it)->getValue(Args, 0)) == "-disable-llvm-optzns")
2208 (*it)->render(Args, CmdArgs);
2228 II.getInputArg().renderAsInput(Args, CmdArgs);
2231 Args.AddAllArgs(CmdArgs, options::OPT_undef);
2239 for (ArgList::const_iterator it = Args.begin(),
2240 ie = Args.end(); it != ie; ++it)
2241 (*it)->render(Args, OriginalArgs);
2250 CmdArgs.push_back(Args.MakeArgString(Flags.str()));
2255 if (Arg *A = Args
2256 if (Args.hasArg(options::OPT_fomit_frame_pointer))
2258 << "-fomit-frame-pointer" << A->getAsString(Args);
2265 Args.ClaimAllArgs(options::OPT_fpch_preprocess);
2269 Args.ClaimAllArgs(options::OPT_clang_ignored_f_Group);
2270 Args.ClaimAllArgs(options::OPT_clang_ignored_m_Group);
2273 Args.ClaimAllArgs(options::OPT_use_gold_plugin);
2274 Args.ClaimAllArgs(options::OPT_emit_llvm);
2280 const ArgList &Args,
2288 Args.ClaimAllArgs(options::OPT_w);
2290 Args.ClaimAllArgs(options::OPT_emit_llvm);
2292 Args.ClaimAllArgs(options::OPT_use_gold_plugin);
2302 getToolChain().ComputeEffectiveClangTriple(Args, Input.getType());
2303 CmdArgs.push_back(Args.MakeArgString(TripleStr));
2310 if (UseRelaxAll(C, Args))
2314 (void) Args.hasArg(options::OPT_force__cpusubtype__ALL);
2320 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
2322 Args.AddAllArgs(CmdArgs, options::OPT_mllvm);
2338 const ArgList &Args,
2344 it = Args.begin(), ie = Args.end(); it != ie; ++it) {
2357 A->render(Args, CmdArgs);
2374 CmdArgs.push_back(Args.MakeArgString(Arch));
2434 A.render(Args, CmdArgs);
2453 Args.MakeArgString(getToolChain().GetProgramPath(GCCName));
2516 const char *darwin::CC1::getBaseInputName(const ArgList &Args,
2518 return Args.MakeArgString(
2522 const char *darwin::CC1::getBaseInputStem(const ArgList &Args,
2524 const char *Str = getBaseInputName(Args, Inputs);
2527 return Args.MakeArgString(std::string(Str, End));
2533 darwin::CC1::getDependencyFileName(const ArgList &Args,
2538 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) {
2539 std::string Str(OutputOpt->getValue(Args));
2542 Res = darwin::CC1::getBaseInputStem(Args, Inputs);
2544 return Args.MakeArgString(Res + ".d");
2628 .Case("local-type-template-args", true)
2657 .Case("unnamed-type-template-args", true)
2679 void darwin::CC1::AddCC1Args(const ArgList &Args,
2683 CheckCodeGenerationOptions(D, Args);
2686 if (!Args.hasArg(options::OPT_mkernel) && !Args.hasArg(options::OPT_static) &&
2687 !Args.hasArg(options::OPT_mdynamic_no_pic))
2692 if (!Args.hasArg(options::OPT_fbuiltin_strcat))
2694 if (!Args.hasArg(options::OPT_fbuiltin_strcpy))
2698 if (Args.hasArg(options::OPT_g_Flag) &&
2699 !Args.hasArg(options::OPT_fno_eliminate_unused_debug_symbols))
2703 void darwin::CC1::AddCC1OptionsArgs(const ArgList &Args, ArgStringList &CmdArgs,
2709 if (Args.hasArg(options::OPT_fast) ||
2710 Args.hasArg(options::OPT_fastf) ||
2711 Args.hasArg(options::OPT_fastcp))
2714 if (Arg *A = Args.getLastArg(options::OPT_pg))
2715 if (Args.hasArg(options::OPT_fomit_frame_pointer))
2717 << A->getAsString(Args) << "-fomit-frame-pointer";
2719 AddCC1Args(Args, CmdArgs);
2721 if (!Args.hasArg(options::OPT_Q))
2725 CmdArgs.push_back(darwin::CC1::getBaseInputName(Args, Inputs));
2727 Args.AddAllArgs(CmdArgs, options::OPT_d_Group);
2729 Args.AddAllArgs(CmdArgs, options::OPT_m_Group);
2730 Args.AddAllArgs(CmdArgs, options::OPT_a_Group);
2735 if ((Args.hasArg(options::OPT_c) || Args.hasArg(options::OPT_S)) &&
2736 Args.hasArg(options::OPT_o)) {
2737 Arg *OutputOpt = Args.getLastArg(options::OPT_o);
2739 CmdArgs.push_back(OutputOpt->getValue(Args));
2742 CmdArgs.push_back(darwin::CC1::getBaseInputStem(Args, Inputs));
2745 Args.AddAllArgs(CmdArgs, options::OPT_g_Group);
2747 Args.AddAllArgs(CmdArgs, options::OPT_O);
2749 Args.AddAllArgs(CmdArgs, options::OPT_W_Group, options::OPT_pedantic_Group);
2750 Args.AddLastArg(CmdArgs, options::OPT_w);
2751 Args.AddAllArgs(CmdArgs, options::OPT_std_EQ, options::OPT_ansi,
2753 if (!Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi)) {
2755 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ,
2759 if (Args.hasArg(options::OPT_v))
2761 if (Args.hasArg(options::OPT_pg) &&
2764 Args.AddLastArg(CmdArgs, options::OPT_p);
2772 // FIXME: Should we grow a better way to deal with "removing" args?
2773 for (arg_iterator it = Args.filtered_begin(options::OPT_f_Group,
2775 ie = Args.filtered_end(); it != ie; ++it) {
2779 (*it)->render(Args, CmdArgs);
2783 Args.AddAllArgs(CmdArgs, options::OPT_f_Group, options::OPT_fsyntax_only);
2786 Args.ClaimAllArgs(options::OPT_f_clang_Group);
2788 Args.AddAllArgs(CmdArgs, options::OPT_undef);
2789 if (Args.hasArg(options::OPT_Qn))
2793 //Args.AddLastArg(CmdArgs, options::OPT__help)
2794 //Args.AddLastArg(CmdArgs, options::OPT__targetHelp)
2799 Args.AddAllArgs(CmdArgs, options::OPT__param);
2801 if (Args.hasArg(options::OPT_fmudflap) ||
2802 Args.hasArg(options::OPT_fmudflapth)) {
2807 if (Args.hasArg(options::OPT_coverage)) {
2816 void darwin::CC1::AddCPPOptionsArgs(const ArgList &Args, ArgStringList &CmdArgs,
2820 AddCPPUniqueOptionsArgs(Args, CmdArgs, Inputs);
2824 AddCC1Args(Args, CmdArgs);
2831 Args.AddAllArgs(CmdArgs, options::OPT_m_Group);
2832 Args.AddAllArgs(CmdArgs, options::OPT_std_EQ, options::OPT_ansi,
2834 if (!Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi)) {
2836 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ,
2839 Args.AddAllArgs(CmdArgs, options::OPT_W_Group, options::OPT_pedantic_Group);
2840 Args.AddLastArg(CmdArgs, options::OPT_w);
2843 Args.AddAllArgs(CmdArgs, options::OPT_f_Group, options::OPT_fsyntax_only);
2846 Args.ClaimAllArgs(options::OPT_f_clang_Group);
2848 if (Args.hasArg(options::OPT_g_Group) && !Args.hasArg(options::OPT_g0) &&
2849 !Args.hasArg(options::OPT_fno_working_directory))
2852 Args.AddAllArgs(CmdArgs, options::OPT_O);
2853 Args.AddAllArgs(CmdArgs, options::OPT_undef);
2854 if (Args.hasArg(options::OPT_save_temps))
2858 void darwin::CC1::AddCPPUniqueOptionsArgs(const ArgList &Args,
2863 CheckPreprocessingOptions(D, Args);
2867 Args.AddLastArg(CmdArgs, options::OPT_C);
2868 Args.AddLastArg(CmdArgs, options::OPT_CC);
2869 if (!Args.hasArg(options::OPT_Q))
2871 Args.AddAllArgs(CmdArgs, options::OPT_nostdinc);
2872 Args.AddAllArgs(CmdArgs, options::OPT_nostdincxx);
2873 Args.AddLastArg(CmdArgs, options::OPT_v);
2874 Args.AddAllArgs(CmdArgs, options::OPT_I_Group, options::OPT_F);
2875 Args.AddLastArg(CmdArgs, options::OPT_P);
2883 if (Args.hasArg(options::OPT_MD)) {
2885 CmdArgs.push_back(darwin::CC1::getDependencyFileName(Args, Inputs));
2888 if (Args.hasArg(options::OPT_MMD)) {
2890 CmdArgs.push_back(darwin::CC1::getDependencyFileName(Args, Inputs));
2893 Args.AddLastArg(CmdArgs, options::OPT_M);
2894 Args.AddLastArg(CmdArgs, options::OPT_MM);
2895 Args.AddAllArgs(CmdArgs, options::OPT_MF);
2896 Args.AddLastArg(CmdArgs, options::OPT_MG);
2897 Args.AddLastArg(CmdArgs, options::OPT_MP);
2898 Args.AddAllArgs(CmdArgs, options::OPT_MQ);
2899 Args.AddAllArgs(CmdArgs, options::OPT_MT);
2900 if (!Args.hasArg(options::OPT_M) && !Args.hasArg(options::OPT_MM) &&
2901 (Args.hasArg(options::OPT_MD) || Args.hasArg(options::OPT_MMD))) {
2902 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) {
2904 CmdArgs.push_back(OutputOpt->getValue(Args));
2908 Args.AddLastArg(CmdArgs, options::OPT_remap);
2909 if (Args.hasArg(options::OPT_g3))
2911 Args.AddLastArg(CmdArgs, options::OPT_H);
2913 AddCPPArgs(Args, CmdArgs);
2915 Args.AddAllArgs(CmdArgs, options::OPT_D, options::OPT_U, options::OPT_A);
2916 Args.AddAllArgs(CmdArgs, options::OPT_i_Group);
2925 Args.AddAllArgValues(CmdArgs, options::OPT_Wp_COMMA,
2928 if (Args.hasArg(options::OPT_fmudflap)) {
2934 if (Args.hasArg(options::OPT_fmudflapth)) {
2942 void darwin::CC1::AddCPPArgs(const ArgList &Args,
2946 if (Args.hasArg(options::OPT_static)) {
2950 // if (!Args.hasArg(arglist.parser.dynamicOption))
2955 if (Args.hasArg(options::OPT_pthread))
2962 const ArgList &Args,
2970 if (Args.hasArg(options::OPT_traditional) ||
2971 Args.hasArg(options::OPT_traditional_cpp))
2979 if (Args.hasArg(options::OPT_E) || getToolChain().getDriver().CCCIsCPP) {
2980 AddCPPOptionsArgs(Args, CmdArgs, Inputs, OutputArgs);
2982 AddCPPOptionsArgs(Args, CmdArgs, Inputs, ArgStringList());
2986 Args.AddAllArgs(CmdArgs, options::OPT_d_Group);
2992 Args.MakeArgString(getToolChain().GetProgramPath(CC1Name));
2999 const ArgList &Args,
3008 if ((A = Args.getLastArg(options::OPT_traditional)))
3010 << A->getAsString(Args) << "-E";
3037 bool OutputArgsEarly = (Args.hasArg(options::OPT_fsyntax_only) ||
3038 Args.hasArg(options::OPT_S));
3041 AddCPPUniqueOptionsArgs(Args, CmdArgs, Inputs);
3043 AddCC1OptionsArgs(Args, CmdArgs, Inputs, OutputArgs);
3045 AddCC1OptionsArgs(Args, CmdArgs, Inputs, ArgStringList());
3066 AddCC1OptionsArgs(Args, CmdArgs, Inputs, OutputArgs);
3068 AddCC1OptionsArgs(Args, CmdArgs, Inputs, ArgStringList());
3098 Args.MakeArgString(getToolChain().GetProgramPath(CC1Name));
3105 const ArgList &Args,
3122 if (Args.hasArg(options::OPT_gstabs))
3124 else if (Args.hasArg(options::OPT_g_Group))
3129 AddDarwinArch(Args, CmdArgs);
3134 Args.hasArg(options::OPT_force__cpusubtype__ALL))
3138 (Args.hasArg(options::OPT_mkernel) ||
3139 Args.hasArg(options::OPT_static) ||
3140 Args.hasArg(options::OPT_fapple_kext)))
3143 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
3156 Args.MakeArgString(getToolChain().GetProgramPath("as"));
3160 void darwin::DarwinTool::AddDarwinArch(const ArgList &Args,
3162 StringRef ArchName = getDarwinToolChain().getDarwinArchName(Args);
3166 CmdArgs.push_back(Args.MakeArgString(ArchName));
3174 const ArgList &Args,
3180 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
3182 if (!Driver::GetReleaseVersion(A->getValue(Args), Version[0],
3186 << A->getAsString(Args);
3196 if (Version[0] >= 100 && !Args.hasArg(options::OPT_Z_Xlinker__no_demangle) &&
3202 Args.hasArg(options::OPT_static));
3204 for (arg_iterator it = Args.filtered_begin(options::OPT_Xlinker,
3206 ie = Args.filtered_end(); it != ie; ++it) {
3209 if (StringRef(A->getValue(Args, i)) == "-kext")
3220 if (Version[0] >= 116 && D.IsUsingLTO(Args)) {
3229 Args.AddAllArgs(CmdArgs, options::OPT_static);
3230 if (!Args.hasArg(options::OPT_static))
3232 if (Args.hasArg(options::OPT_fgnu_runtime)) {
3233 // FIXME: gcc replaces -lobjc in forward args with -lobjc-gnu
3237 if (!Args.hasArg(options::OPT_dynamiclib)) {
3238 AddDarwinArch(Args, CmdArgs);
3240 Args.AddLastArg(CmdArgs, options::OPT_force__cpusubtype__ALL);
3242 Args.AddLastArg(CmdArgs, options::OPT_bundle);
3243 Args.AddAllArgs(CmdArgs, options::OPT_bundle__loader);
3244 Args.AddAllArgs(CmdArgs, options::OPT_client__name);
3247 if ((A = Args.getLastArg(options::OPT_compatibility__version)) ||
3248 (A = Args.getLastArg(options::OPT_current__version)) ||
3249 (A = Args.getLastArg(options::OPT_install__name)))
3251 << A->getAsString(Args) << "-dynamiclib";
3253 Args.AddLastArg(CmdArgs, options::OPT_force__flat__namespace);
3254 Args.AddLastArg(CmdArgs, options::OPT_keep__private__externs);
3255 Args.AddLastArg(CmdArgs, options::OPT_private__bundle);
3260 if ((A = Args.getLastArg(options::OPT_bundle)) ||
3261 (A = Args.getLastArg(options::OPT_bundle__loader)) ||
3262 (A = Args.getLastArg(options::OPT_client__name)) ||
3263 (A = Args.getLastArg(options::OPT_force__flat__namespace)) ||
3264 (A = Args.getLastArg(options::OPT_keep__private__externs)) ||
3265 (A = Args.getLastArg(options::OPT_private__bundle)))
3267 << A->getAsString(Args) << "-dynamiclib";
3269 Args.AddAllArgsTranslated(CmdArgs, options::OPT_compatibility__version,
3271 Args.AddAllArgsTranslated(CmdArgs, options::OPT_current__version,
3274 AddDarwinArch(Args, CmdArgs);
3276 Args.AddAllArgsTranslated(CmdArgs, options::OPT_install__name,
3280 Args.AddLastArg(CmdArgs, options::OPT_all__load);
3281 Args.AddAllArgs(CmdArgs, options::OPT_allowable__client);
3282 Args.AddLastArg(CmdArgs, options::OPT_bind__at__load);
3284 Args.AddLastArg(CmdArgs, options::OPT_arch__errors__fatal);
3285 Args.AddLastArg(CmdArgs, options::OPT_dead__strip);
3286 Args.AddLastArg(CmdArgs, options::OPT_no__dead__strip__inits__and__terms);
3287 Args.AddAllArgs(CmdArgs, options::OPT_dylib__file);
3288 Args.AddLastArg(CmdArgs, options::OPT_dynamic);
3289 Args.AddAllArgs(CmdArgs, options::OPT_exported__symbols__list);
3290 Args.AddLastArg(CmdArgs, options::OPT_flat__namespace);
3291 Args.AddAllArgs(CmdArgs, options::OPT_force__load);
3292 Args.AddAllArgs(CmdArgs, options::OPT_headerpad__max__install__names);
3293 Args.AddAllArgs(CmdArgs, options::OPT_image__base);
3294 Args.AddAllArgs(CmdArgs, options::OPT_init);
3307 if (Args.hasArg(options::OPT_mios_simulator_version_min_EQ))
3313 CmdArgs.push_back(Args.MakeArgString(Twine(TargetVersion[0]) + "." +
3317 Args.AddLastArg(CmdArgs, options::OPT_nomultidefs);
3318 Args.AddLastArg(CmdArgs, options::OPT_multi__module);
3319 Args.AddLastArg(CmdArgs, options::OPT_single__module);
3320 Args.AddAllArgs(CmdArgs, options::OPT_multiply__defined);
3321 Args.AddAllArgs(CmdArgs, options::OPT_multiply__defined__unused);
3323 if (const Arg *A = Args.getLastArg(options::OPT_fpie, options::OPT_fPIE,
3333 Args.AddLastArg(CmdArgs, options::OPT_prebind);
3334 Args.AddLastArg(CmdArgs, options::OPT_noprebind);
3335 Args.AddLastArg(CmdArgs, options::OPT_nofixprebinding);
3336 Args.AddLastArg(CmdArgs, options::OPT_prebind__all__twolevel__modules);
3337 Args.AddLastArg(CmdArgs, options::OPT_read__only__relocs);
3338 Args.AddAllArgs(CmdArgs, options::OPT_sectcreate);
3339 Args.AddAllArgs(CmdArgs, options::OPT_sectorder);
3340 Args.AddAllArgs(CmdArgs, options::OPT_seg1addr);
3341 Args.AddAllArgs(CmdArgs, options::OPT_segprot);
3342 Args.AddAllArgs(CmdArgs, options::OPT_segaddr);
3343 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__only__addr);
3344 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__write__addr);
3345 Args.AddAllArgs(CmdArgs, options::OPT_seg__addr__table);
3346 Args.AddAllArgs(CmdArgs, options::OPT_seg__addr__table__filename);
3347 Args.AddAllArgs(CmdArgs, options::OPT_sub__library);
3348 Args.AddAllArgs(CmdArgs, options::OPT_sub__umbrella);
3352 if (const Arg *A = Args.getLastArg(options::OPT__sysroot_EQ)) {
3354 CmdArgs.push_back(A->getValue(Args));
3355 } else if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) {
3357 CmdArgs.push_back(A->getValue(Args));
3363 Args.AddLastArg(CmdArgs, options::OPT_twolevel__namespace);
3364 Args.AddLastArg(CmdArgs, options::OPT_twolevel__namespace__hints);
3365 Args.AddAllArgs(CmdArgs, options::OPT_umbrella);
3366 Args.AddAllArgs(CmdArgs, options::OPT_undefined);
3367 Args.AddAllArgs(CmdArgs, options::OPT_unexported__symbols__list);
3368 Args.AddAllArgs(CmdArgs, options::OPT_weak__reference__mismatches);
3369 Args.AddLastArg(CmdArgs, options::OPT_X_Flag);
3370 Args.AddAllArgs(CmdArgs, options::OPT_y);
3371 Args.AddLastArg(CmdArgs, options::OPT_w);
3372 Args.AddAllArgs(CmdArgs, options::OPT_pagezero__size);
3373 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__);
3374 Args.AddLastArg(CmdArgs, options::OPT_seglinkedit);
3375 Args.AddLastArg(CmdArgs, options::OPT_noseglinkedit);
3376 Args.AddAllArgs(CmdArgs, options::OPT_sectalign);
3377 Args.AddAllArgs(CmdArgs, options::OPT_sectobjectsymbols);
3378 Args.AddAllArgs(CmdArgs, options::OPT_segcreate);
3379 Args.AddLastArg(CmdArgs, options::OPT_whyload);
3380 Args.AddLastArg(CmdArgs, options::OPT_whatsloaded);
3381 Args.AddAllArgs(CmdArgs, options::OPT_dylinker__install__name);
3382 Args.AddLastArg(CmdArgs, options::OPT_dylinker);
3383 Args.AddLastArg(CmdArgs, options::OPT_Mach);
3389 const ArgList &Args,
3399 if (Args.hasArg(options::OPT_ccc_arcmt_check,
3401 for (ArgList::const_iterator I = Args.begin(), E = Args.end(); I != E; ++I)
3404 Args.MakeArgString(getToolChain().GetProgramPath("touch"));
3412 AddLinkArgs(C, Args, CmdArgs);
3414 Args.AddAllArgs(CmdArgs, options::OPT_d_Flag);
3415 Args.AddAllArgs(CmdArgs, options::OPT_s);
3416 Args.AddAllArgs(CmdArgs, options::OPT_t);
3417 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
3418 Args.AddAllArgs(CmdArgs, options::OPT_u_Group);
3419 Args.AddAllArgs(CmdArgs, options::OPT_A);
3420 Args.AddLastArg(CmdArgs, options::OPT_e);
3421 Args.AddAllArgs(CmdArgs, options::OPT_m_Separate);
3422 Args.AddAllArgs(CmdArgs, options::OPT_r);
3427 if (Args.hasArg(options::OPT_ObjC) || Args.hasArg(options::OPT_ObjCXX))
3433 if (!Args.hasArg(options::OPT_A) &&
3434 !Args.hasArg(options::OPT_nostdlib) &&
3435 !Args.hasArg(options::OPT_nostartfiles)) {
3437 if (Args.hasArg(options::OPT_dynamiclib)) {
3452 if (Args.hasArg(options::OPT_bundle)) {
3453 if (!Args.hasArg(options::OPT_static)) {
3467 if (Args.hasArg(options::OPT_pg) &&
3469 if (Args.hasArg(options::OPT_static) ||
3470 Args.hasArg(options::OPT_object) ||
3471 Args.hasArg(options::OPT_preload)) {
3479 if (Args.hasArg(options::OPT_static) ||
3480 Args.hasArg(options::OPT_object) ||
3481 Args.hasArg(options::OPT_preload)) {
3509 Args.hasArg(options::OPT_shared_libgcc) &&
3512 Args.MakeArgString(getToolChain().GetFilePath("crt3.o"));
3517 Args.AddAllArgs(CmdArgs, options::OPT_L);
3519 if (Args.hasArg(options::OPT_fopenmp))
3523 getDarwinToolChain().AddLinkSearchPathArgs(Args, CmdArgs);
3528 if (isObjCAutoRefCount(Args)) {
3532 getDarwinToolChain().AddLinkARCArgs(Args, CmdArgs);
3535 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
3543 if (Args.hasArg(options::OPT_fnested_functions))
3546 if (!Args.hasArg(options::OPT_nostdlib) &&
3547 !Args.hasArg(options::OPT_nodefaultlibs)) {
3549 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
3554 getDarwinToolChain().AddLinkRuntimeLibArgs(Args, CmdArgs);
3557 if (!Args.hasArg(options::OPT_A) &&
3558 !Args.hasArg(options::OPT_nostdlib) &&
3559 Args.hasArg(options::OPT_nostartfiles)) {
3563 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
3565 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
3566 Args.AddAllArgs(CmdArgs, options::OPT_F);
3569 Args.MakeArgString(getToolChain().GetProgramPath("ld"));
3576 const ArgList &Args,
3593 Args.MakeArgString(getToolChain().GetProgramPath("lipo"));
3600 const ArgList &Args,
3613 Args.MakeArgString(getToolChain().GetProgramPath("dsymutil"));
3620 const ArgList &Args,
3633 Args.MakeArgString(getToolChain().GetProgramPath("dwarfdump"));
3640 const ArgList &Args,
3644 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
3657 Args.MakeArgString(getToolChain().GetProgramPath("gas"));
3664 const ArgList &Args,
3668 if ((!Args.hasArg(options::OPT_nostdlib)) &&
3669 (!Args.hasArg(options::OPT_shared))) {
3674 if (Args.hasArg(options::OPT_static)) {
3680 if (Args.hasArg(options::OPT_shared)) {
3695 if (!Args.hasArg(options::OPT_nostdlib) &&
3696 !Args.hasArg(options::OPT_nostartfiles)) {
3697 if (!Args.hasArg(options::OPT_shared)) {
3698 CmdArgs.push_back(Args.MakeArgString(
3700 CmdArgs.push_back(Args.MakeArgString(
3702 CmdArgs.push_back(Args.MakeArgString(
3705 CmdArgs.push_back(Args.MakeArgString(
3708 CmdArgs.push_back(Args.MakeArgString(
3712 CmdArgs.push_back(Args.MakeArgString("-L/opt/gcc4/lib/gcc/"
3716 Args.AddAllArgs(CmdArgs, options::OPT_L);
3717 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
3718 Args.AddAllArgs(CmdArgs, options::OPT_e);
3720 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
3722 if (!Args.hasArg(options::OPT_nostdlib) &&
3723 !Args.hasArg(options::OPT_nodefaultlibs)) {
3728 if (Args.hasArg(options::OPT_pthread))
3730 if (!Args.hasArg(options::OPT_shared))
3735 if (!Args.hasArg(options::OPT_nostdlib) &&
3736 !Args.hasArg(options::OPT_nostartfiles)) {
3737 if (!Args.hasArg(options::OPT_shared))
3738 CmdArgs.push_back(Args.MakeArgString(
3742 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
3745 Args.MakeArgString(getToolChain().GetProgramPath("ld"));
3752 const ArgList &Args,
3756 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
3769 Args.MakeArgString(getToolChain().GetProgramPath("as"));
3776 const ArgList &Args,
3781 if ((!Args.hasArg(options::OPT_nostdlib)) &&
3782 (!Args.hasArg(options::OPT_shared))) {
3787 if (Args.hasArg(options::OPT_static)) {
3790 if (Args.hasArg(options::OPT_rdynamic))
3794 if (Args.hasArg(options::OPT_shared)) {
3809 if (!Args.hasArg(options::OPT_nostdlib) &&
3810 !Args.hasArg(options::OPT_nostartfiles)) {
3811 if (!Args.hasArg(options::OPT_shared)) {
3812 CmdArgs.push_back(Args.MakeArgString(
3814 CmdArgs.push_back(Args.MakeArgString(
3817 CmdArgs.push_back(Args.MakeArgString(
3825 CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc-lib/" + Triple +
3828 Args.AddAllArgs(CmdArgs, options::OPT_L);
3829 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
3830 Args.AddAllArgs(CmdArgs, options::OPT_e);
3832 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
3834 if (!Args.hasArg(options::OPT_nostdlib) &&
3835 !Args.hasArg(options::OPT_nodefaultlibs)) {
3837 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
3845 if (Args.hasArg(options::OPT_pthread))
3847 if (!Args.hasArg(options::OPT_shared))
3852 if (!Args.hasArg(options::OPT_nostdlib) &&
3853 !Args.hasArg(options::OPT_nostartfiles)) {
3854 if (!Args.hasArg(options::OPT_shared))
3855 CmdArgs.push_back(Args.MakeArgString(
3858 CmdArgs.push_back(Args.MakeArgString(
3863 Args.MakeArgString(getToolChain().GetProgramPath("ld"));
3870 const ArgList &Args,
3888 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
3901 Args.MakeArgString(getToolChain().GetProgramPath("as"));
3908 const ArgList &Args,
3914 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
3916 if (Args.hasArg(options::OPT_static)) {
3919 if (Args.hasArg(options::OPT_rdynamic))
3922 if (Args.hasArg(options::OPT_shared)) {
3949 if (!Args.hasArg(options::OPT_nostdlib) &&
3950 !Args.hasArg(options::OPT_nostartfiles)) {
3951 if (!Args.hasArg(options::OPT_shared)) {
3952 if (Args.hasArg(options::OPT_pg))
3953 CmdArgs.push_back(Args.MakeArgString(
3956 const char *crt = Args.hasArg(options::OPT_pie) ? "Scrt1.o" : "crt1.o";
3957 CmdArgs.push_back(Args.MakeArgString(
3960 CmdArgs.push_back(Args.MakeArgString(
3962 CmdArgs.push_back(Args.MakeArgString(
3965 CmdArgs.push_back(Args.MakeArgString(
3967 CmdArgs.push_back(Args.MakeArgString(
3972 Args.AddAllArgs(CmdArgs, options::OPT_L);
3976 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + *i));
3977 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
3978 Args.AddAllArgs(CmdArgs, options::OPT_e);
3979 Args.AddAllArgs(CmdArgs, options::OPT_s);
3980 Args.AddAllArgs(CmdArgs, options::OPT_t);
3981 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
3982 Args.AddAllArgs(CmdArgs, options::OPT_r);
3984 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
3986 if (!Args.hasArg(options::OPT_nostdlib) &&
3987 !Args.hasArg(options::OPT_nodefaultlibs)) {
3989 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
3990 if (Args.hasArg(options::OPT_pg))
3997 if (Args.hasArg(options::OPT_pg))
4001 if (Args.hasArg(options::OPT_static)) {
4003 } else if (Args.hasArg(options::OPT_pg)) {
4011 if (Args.hasArg(options::OPT_pthread)) {
4012 if (Args.hasArg(options::OPT_pg))
4018 if (Args.hasArg(options::OPT_pg)) {
4019 if (Args.hasArg(options::OPT_shared))
4029 if (Args.hasArg(options::OPT_static)) {
4031 } else if (Args.hasArg(options::OPT_pg)) {
4040 if (!Args.hasArg(options::OPT_nostdlib) &&
4041 !Args.hasArg(options::OPT_nostartfiles)) {
4042 if (!Args.hasArg(options::OPT_shared))
4043 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
4046 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
4048 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
4052 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
4055 Args.MakeArgString(getToolChain().GetProgramPath("ld"));
4062 const ArgList &Args,
4079 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
4091 const char *Exec = Args.MakeArgString((getToolChain().GetProgramPath("as")));
4098 const ArgList &Args,
4104 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
4106 if (Args.hasArg(options::OPT_static)) {
4109 if (Args.hasArg(options::OPT_rdynamic))
4112 if (Args.hasArg(options::OPT_shared)) {
4135 if (!Args.hasArg(options::OPT_nostdlib) &&
4136 !Args.hasArg(options::OPT_nostartfiles)) {
4137 if (!Args.hasArg(options::OPT_shared)) {
4138 CmdArgs.push_back(Args.MakeArgString(
4140 CmdArgs.push_back(Args.MakeArgString(
4142 CmdArgs.push_back(Args.MakeArgString(
4145 CmdArgs.push_back(Args.MakeArgString(
4147 CmdArgs.push_back(Args.MakeArgString(
4152 Args.AddAllArgs(CmdArgs, options::OPT_L);
4153 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
4154 Args.AddAllArgs(CmdArgs, options::OPT_e);
4155 Args.AddAllArgs(CmdArgs, options::OPT_s);
4156 Args.AddAllArgs(CmdArgs, options::OPT_t);
4157 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
4158 Args.AddAllArgs(CmdArgs, options::OPT_r);
4160 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
4162 if (!Args.hasArg(options::OPT_nostdlib) &&
4163 !Args.hasArg(options::OPT_nodefaultlibs)) {
4165 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
4170 if (Args.hasArg(options::OPT_static)) {
4179 if (Args.hasArg(options::OPT_pthread))
4184 if (Args.hasArg(options::OPT_static)) {
4193 if (!Args.hasArg(options::OPT_nostdlib) &&
4194 !Args.hasArg(options::OPT_nostartfiles)) {
4195 if (!Args.hasArg(options::OPT_shared))
4196 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
4199 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
4201 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
4205 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
4207 const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("ld"));
4214 const ArgList &Args,
4230 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
4243 Args.MakeArgString(getToolChain().GetProgramPath("as"));
4248 const ArgList &Args) {
4249 bool StaticLibgcc = Args.hasArg(options::OPT_static) ||
4250 Args.hasArg(options::OPT_static_libgcc);
4267 else if (!Args.hasArg(options::OPT_shared) && D.CCCIsCXX)
4274 const ArgList &Args,
4282 Args.ClaimAllArgs(options::OPT_g_Group);
4284 Args.ClaimAllArgs(options::OPT_emit_llvm);
4287 Args.ClaimAllArgs(options::OPT_w);
4290 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
4292 if (Args.hasArg(options::OPT_pie))
4295 if (Args.hasArg(options::OPT_rdynamic))
4298 if (Args.hasArg(options::OPT_s))
4306 if (!Args.hasArg(options::OPT_static)) {
4323 if (Args.hasArg(options::OPT_static)) {
4329 } else if (Args.hasArg(options::OPT_shared)) {
4335 (!Args.hasArg(options::OPT_static) &&
4336 !Args.hasArg(options::OPT_shared))) {
4354 if (!Args.hasArg(options::OPT_nostdlib) &&
4355 !Args.hasArg(options::OPT_nostartfiles)) {
4357 if (!Args.hasArg(options::OPT_shared)){
4358 if (Args.hasArg(options::OPT_pie))
4364 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crt1)));
4366 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o")));
4369 if (Args.hasArg(options::OPT_static))
4371 else if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
4375 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin)));
4378 Args.AddAllArgs(CmdArgs, options::OPT_L);
4384 CmdArgs.push_back(Args.MakeArgString(StringRef("-L") + *i));
4386 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
4388 if (D.CCCIsCXX && !Args.hasArg(options::OPT_nostdlib)) {
4389 bool OnlyLibstdcxxStatic = Args.hasArg(options::OPT_static_libstdcxx) &&
4390 !Args.hasArg(options::OPT_static);
4393 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
4399 if (!Args.hasArg(options::OPT_nostdlib)) {
4400 if (Args.hasArg(options::OPT_static))
4403 AddLibgcc(D, CmdArgs, Args);
4405 if (Args.hasArg(options::OPT_pthread) ||
4406 Args.hasArg(options::OPT_pthreads))
4411 if (Args.hasArg(options::OPT_static))
4414 AddLibgcc(D, CmdArgs, Args);
4417 if (!Args.hasArg(options::OPT_nostartfiles)) {
4419 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
4424 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtend)));
4425 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
4429 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
4431 if (Args.hasArg(options::OPT_use_gold_plugin)) {
4434 CmdArgs.push_back(Args.MakeArgString(Plugin));
4443 const ArgList &Args,
4447 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
4460 Args.MakeArgString(getToolChain().GetProgramPath("gas"));
4467 const ArgList &Args,
4479 if (!Args.hasArg(options::OPT_nostdlib) &&
4480 !Args.hasArg(options::OPT_nostartfiles))
4481 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
4484 Args.AddAllArgs(CmdArgs, options::OPT_L);
4485 Args
4486 Args.AddAllArgs(CmdArgs, options::OPT_e);
4488 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
4490 if (!Args.hasArg(options::OPT_nostdlib) &&
4491 !Args.hasArg(options::OPT_nodefaultlibs)) {
4493 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
4497 if (Args.hasArg(options::OPT_pthread))
4507 if (!Args.hasArg(options::OPT_nostdlib) &&
4508 !Args.hasArg(options::OPT_nostartfiles)) {
4509 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
4513 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
4516 Args.MakeArgString(getToolChain().GetProgramPath("/usr/gnu/bin/gld"));
4527 const ArgList &Args,
4536 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
4549 Args.MakeArgString(getToolChain().GetProgramPath("as"));
4556 const ArgList &Args,
4562 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
4564 if (Args.hasArg(options::OPT_static)) {
4567 if (Args.hasArg(options::OPT_shared))
4589 if (!Args.hasArg(options::OPT_nostdlib) &&
4590 !Args.hasArg(options::OPT_nostartfiles)) {
4591 if (!Args.hasArg(options::OPT_shared)) {
4593 Args.MakeArgString(getToolChain().GetFilePath("crt1.o")));
4595 Args.MakeArgString(getToolChain().GetFilePath("crti.o")));
4597 Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o")));
4600 Args.MakeArgString(getToolChain().GetFilePath("crti.o")));
4602 Args.MakeArgString(getToolChain().GetFilePath("crtbeginS.o")));
4606 Args.AddAllArgs(CmdArgs, options::OPT_L);
4607 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
4608 Args.AddAllArgs(CmdArgs, options::OPT_e);
4610 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
4612 if (!Args.hasArg(options::OPT_nostdlib) &&
4613 !Args.hasArg(options::OPT_nodefaultlibs)) {
4618 if (!Args.hasArg(options::OPT_static)) {
4633 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
4637 if (Args.hasArg(options::OPT_shared)) {
4644 if (Args.hasArg(options::OPT_pthread))
4647 if (!Args.hasArg(options::OPT_nolibc)) {
4651 if (Args.hasArg(options::OPT_shared)) {
4658 if (!Args.hasArg(options::OPT_nostdlib) &&
4659 !Args.hasArg(options::OPT_nostartfiles)) {
4660 if (!Args.hasArg(options::OPT_shared))
4661 CmdArgs.push_back(Args.MakeArgString(
4664 CmdArgs.push_back(Args.MakeArgString(
4666 CmdArgs.push_back(Args.MakeArgString(
4670 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
4673 Args.MakeArgString(getToolChain().GetProgramPath("ld"));
4680 const ArgList &Args,
4685 CmdArgs.push_back(Args.MakeArgString(std::string("-out:") +
4691 if (!Args.hasArg(options::OPT_nostdlib) &&
4692 !Args.hasArg(options::OPT_nostartfiles)) {
4698 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
4701 Args.MakeArgString(getToolChain().GetProgramPath("link.exe"));