Lines Matching refs:Args
63 static void CheckPreprocessingOptions(const Driver &D, const ArgList &Args) {
64 if (Arg *A = Args.getLastArg(options::OPT_C, options::OPT_CC))
65 if (!Args.hasArg(options::OPT_E) && !D.CCCIsCPP)
67 << A->getAsString(Args) << "-E";
72 static void CheckCodeGenerationOptions(const Driver &D, const ArgList &Args) {
74 if (Args.hasArg(options::OPT_static))
75 if (const Arg *A = Args.getLastArg(options::OPT_dynamic,
78 << A->getAsString(Args) << "-static";
111 const InputInfoList &Inputs, const ArgList &Args,
117 Args.AddAllArgValues(CmdArgs, options::OPT_Zlinker_input);
144 TC.AddCXXStdlibLibArgs(Args, CmdArgs);
146 TC.AddCCKextLibArgs(Args, CmdArgs);
148 A.renderAsInput(Args, CmdArgs);
154 static bool isObjCAutoRefCount(const ArgList &Args) {
155 return Args.hasFlag(options::OPT_fobjc_arc, options::OPT_fno_objc_arc, false);
158 static void addProfileRT(const ToolChain &TC, const ArgList &Args,
161 if (!(Args.hasArg(options::OPT_fprofile_arcs) ||
162 Args.hasArg(options::OPT_fprofile_generate) ||
163 Args.hasArg(options::OPT_fcreate_profile) ||
164 Args.hasArg(options::OPT_coverage)))
182 CmdArgs.push_back(Args.MakeArgString(ProfileRT));
186 const ArgList &Args,
192 CheckPreprocessingOptions(D, Args);
194 Args.AddLastArg(CmdArgs, options::OPT_C);
195 Args.AddLastArg(CmdArgs, options::OPT_CC);
198 if ((A = Args.getLastArg(options::OPT_M, options::OPT_MM)) ||
199 (A = Args.getLastArg(options::OPT_MD)) ||
200 (A = Args.getLastArg(options::OPT_MMD))) {
205 } else if (Arg *MF = Args.getLastArg(options::OPT_MF)) {
206 DepFile = MF->getValue(Args);
211 DepFile = darwin::CC1::getDependencyFileName(Args, Inputs);
217 if (!Args.hasArg(options::OPT_MT) && !Args.hasArg(options::OPT_MQ)) {
222 Arg *OutputOpt = Args.getLastArg(options::OPT_o);
224 DepTarget = OutputOpt->getValue(Args);
231 DepTarget = Args.MakeArgString(llvm::sys::path::filename(P));
237 CmdArgs.push_back(Args.MakeArgString(Quoted));
245 if (Args.hasArg(options::OPT_MG)) {
252 Args.AddLastArg(CmdArgs, options::OPT_MP);
254 // Convert all -MQ <target> args to -MT <quoted target>
255 for (arg_iterator it = Args.filtered_begin(options::OPT_MT,
257 ie = Args.filtered_end(); it != ie; ++it) {
264 QuoteTarget(A->getValue(Args), Quoted);
265 CmdArgs.push_back(Args.MakeArgString(Quoted));
269 A->render(Args, CmdArgs);
279 for (arg_iterator it = Args.filtered_begin(options::OPT_clang_i_Group),
280 ie = Args.filtered_end(); it != ie; ++it) {
292 llvm::sys::Path P(A->getValue(Args));
327 CmdArgs.push_back(Args.MakeArgString(P.str()));
332 << P.str() << A->getAsString(Args);
339 A->render(Args, CmdArgs);
342 Args.AddAllArgs(CmdArgs, options::OPT_D, options::OPT_U);
343 Args.AddAllArgs(CmdArgs, options::OPT_I_Group, options::OPT_F);
349 = types::isObjC(InputType) && isObjCAutoRefCount(Args);
350 getToolChain().AddClangCXXStdlibIncludeArgs(Args, CmdArgs,
352 Args.AddAllArgs(CmdArgs, options::OPT_stdlib_EQ);
361 Args.AddAllArgValues(CmdArgs, options::OPT_Wp_COMMA,
365 if (Arg *A = Args.getLastArg(options::OPT_I_))
366 D.Diag(clang::diag::err_drv_I_dash_not_supported) << A->getAsString(Args);
370 if (Arg *A = Args.getLastArg(options::OPT__sysroot_EQ)) {
371 if (!Args.hasArg(options::OPT_isysroot)) {
373 CmdArgs.push_back(A->getValue(Args));
381 static const char *getARMTargetCPU(const ArgList &Args,
386 if (Arg *A = Args.getLastArg(options::OPT_mcpu_EQ))
387 return A->getValue(Args);
390 if (Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
392 MArch = A->getValue(Args);
491 void Clang::AddARMTargetArgs(const ArgList &Args,
507 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) {
508 ABIName = A->getValue(Args);
527 CmdArgs.push_back(getARMTargetCPU(Args, Triple));
532 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
540 FloatABI = A->getValue(Args);
543 << A->getAsString(Args);
558 getLLVMArchSuffixForARM(getARMTargetCPU(Args, Triple));
632 if (const Arg *A = Args.getLastArg(options::OPT_mfpu_EQ)) {
633 llvm::StringRef FPU = A->getValue(Args);
654 D.Diag(clang::diag::err_drv_clang_unsupported) << A->getAsString(Args);
680 void Clang::AddMIPSTargetArgs(const ArgList &Args,
686 if (Arg *A = Args.getLastArg(options::OPT_mabi_EQ)) {
687 ABIName = A->getValue(Args);
695 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
696 llvm::StringRef MArch = A->getValue(Args);
704 CmdArgs.push_back(Args.MakeArgString(MArch));
709 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
735 void Clang::AddSparcTargetArgs(const ArgList &Args,
739 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
740 llvm::StringRef MArch = A->getValue(Args);
747 if (Arg *A = Args.getLastArg(options::OPT_msoft_float,
779 void Clang::AddX86TargetArgs(const ArgList &Args,
781 if (!Args.hasFlag(options::OPT_mred_zone,
784 Args.hasArg(options::OPT_mkernel) ||
785 Args.hasArg(options::OPT_fapple_kext))
788 if (Args.hasFlag(options::OPT_msoft_float,
794 if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) {
795 if (llvm::StringRef(A->getValue(Args)) == "native") {
803 CPUName = Args.MakeArgString(CPU);
805 CPUName = A->getValue(Args);
857 for (arg_iterator it = Args.filtered_begin(options::OPT_m_x86_Features_Group),
858 ie = Args.filtered_end(); it != ie; ++it) {
874 Features.push_back(Args.MakeArgString((IsNegative ? "-" : "+") + Name));
907 static void addExceptionArgs(const ArgList &Args, types::ID InputType,
921 if (Arg *A = Args.getLastArg(options::OPT_fexceptions,
941 Args.hasFlag(options::OPT_fobjc_exceptions,
953 if (Arg *A = Args.getLastArg(options::OPT_fcxx_exceptions,
974 static bool ShouldDisableCFI(const ArgList &Args,
983 bool HasStatic = (Args.hasArg(options::OPT_mkernel) ||
984 Args.hasArg(options::OPT_static) ||
985 Args.hasArg(options::OPT_fapple_kext));
987 bool UseIntegratedAs = Args.hasFlag(options::OPT_integrated_as,
990 bool UseCFI = Args.hasFlag(options::OPT_fdwarf2_cfi_asm,
1014 static bool UseRelaxAll(Compilation &C, const ArgList &Args) {
1017 if (Arg *A = Args.getLastArg(options::OPT_O_Group))
1031 return Args.hasFlag(options::OPT_mrelax_all, options::OPT_mno_relax_all,
1038 const ArgList &Args,
1040 bool KernelOrKext = Args.hasArg(options::OPT_mkernel,
1054 std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
1055 CmdArgs.push_back(Args.MakeArgString(TripleStr));
1070 if (UseRelaxAll(C, Args))
1075 for (arg_iterator it = Args.filtered_begin(options::OPT_Wa_COMMA,
1077 ie = Args.filtered_end(); it != ie; ++it) {
1082 llvm::StringRef Value = A->getValue(Args, i);
1101 (void) Args.hasArg(options::OPT_force__cpusubtype__ALL);
1145 CmdArgs.push_back(darwin::CC1::getBaseInputName(Args, Inputs));
1149 if (Args.hasArg(options::OPT_static))
1162 if (!Args.hasArg(options::OPT__analyzer_no_default_checks)) {
1177 if (Arg *A = Args.getLastArg(options::OPT__analyzer_output))
1178 CmdArgs.push_back(A->getValue(Args));
1188 Args.AddAllArgValues(CmdArgs, options::OPT_Xanalyzer);
1191 CheckCodeGenerationOptions(D, Args);
1203 bool PICEnabled = (Args.hasArg(options::OPT_fPIC) ||
1204 Args.hasArg(options::OPT_fpic) ||
1205 Args.hasArg(options::OPT_fPIE) ||
1206 Args.hasArg(options::OPT_fpie));
1207 bool PICDisabled = (Args.hasArg(options::OPT_mkernel) ||
1208 Args.hasArg(options::OPT_static));
1211 if (Args.hasArg(options::OPT_mdynamic_no_pic))
1231 CmdArgs.push_back(Args.hasArg(options::OPT_fPIC) ? "2" : "1");
1233 if (!Args.hasFlag(options::OPT_fmerge_all_constants,
1239 if (Arg *A = Args.getLastArg(options::OPT_mregparm_EQ)) {
1241 CmdArgs.push_back(A->getValue(Args));
1244 if (Args.hasFlag(options::OPT_mrtd, options::OPT_mno_rtd, false))
1248 if (Args.hasFlag(options::OPT_fno_omit_frame_pointer,
1251 if (!Args.hasFlag(options::OPT_fzero_initialized_in_bss,
1254 if (!Args.hasFlag(options::OPT_fstrict_aliasing,
1262 if (Args.hasFlag(options::OPT_fverbose_asm, options::OPT_fno_verbose_asm,
1264 Args.hasArg(options::OPT_dA))
1267 if (Args.hasArg(options::OPT_fdebug_pass_structure)) {
1271 if (Args.hasArg(options::OPT_fdebug_pass_arguments)) {
1287 if (Args.hasArg(options::OPT_mms_bitfields)) {
1295 Args.hasFlag(options::OPT_fasynchronous_unwind_tables,
1299 if (Args.hasFlag(options::OPT_funwind_tables, options::OPT_fno_unwind_tables,
1303 if (Arg *A = Args.getLastArg(options::OPT_flimited_precision_EQ)) {
1305 CmdArgs.push_back(A->getValue(Args));
1309 (void) Args.hasArg(options::OPT_mtune_EQ);
1311 if (Arg *A = Args.getLastArg(options::OPT_mcmodel_EQ)) {
1313 CmdArgs.push_back(A->getValue(Args));
1323 AddARMTargetArgs(Args, CmdArgs, KernelOrKext);
1328 AddMIPSTargetArgs(Args, CmdArgs);
1332 AddSparcTargetArgs(Args, CmdArgs);
1337 AddX86TargetArgs(Args, CmdArgs);
1342 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
1344 CmdArgs.push_back(A->getValue(Args));
1348 if (Args.hasFlag(options::OPT_momit_leaf_frame_pointer,
1354 if (Args.hasFlag(options::OPT_fmath_errno,
1362 if (!Args.hasArg(options::OPT_fallow_unsupported)) {
1364 if ((Unsupported = Args.getLastArg(options::OPT_iframework)))
1371 if ((Unsupported = Args.getLastArg(options::OPT_fapple_kext)))
1377 Args.AddAllArgs(CmdArgs, options::OPT_v);
1378 Args.AddLastArg(CmdArgs, options::OPT_H);
1384 Args.AddLastArg(CmdArgs, options::OPT_P);
1385 Args.AddLastArg(CmdArgs, options::OPT_print_ivar_layout);
1395 Args.ClaimAllArgs(options::OPT_g_Group);
1396 if (Arg *A = Args.getLastArg(options::OPT_g_Group))
1400 Args.AddAllArgs(CmdArgs, options::OPT_ffunction_sections);
1401 Args.AddAllArgs(CmdArgs, options::OPT_fdata_sections);
1403 Args.AddAllArgs(CmdArgs, options::OPT_finstrument_functions);
1405 if (Args.hasArg(options::OPT_ftest_coverage) ||
1406 Args.hasArg(options::OPT_coverage))
1408 if (Args.hasArg(options::OPT_fprofile_arcs) ||
1409 Args.hasArg(options::OPT_coverage))
1416 CmdArgs.push_back(Args
1420 Args.AddLastArg(CmdArgs, options::OPT_nostdinc);
1421 Args.AddLastArg(CmdArgs, options::OPT_nostdincxx);
1422 Args.AddLastArg(CmdArgs, options::OPT_nobuiltininc);
1428 Args.AddLastArg(CmdArgs, options::OPT_working_directory);
1430 if (!Args.hasArg(options::OPT_fno_objc_arc)) {
1431 if (const Arg *A = Args.getLastArg(options::OPT_ccc_arcmt_check,
1446 CmdArgs.push_back(A->getValue(Args));
1448 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_report_output);
1449 Args.AddLastArg(CmdArgs, options::OPT_arcmt_migrate_emit_arc_errors);
1460 AddPreprocessingOptions(D, Args, CmdArgs, Output, Inputs);
1464 if (Arg *A = Args.getLastArg(options::OPT_O_Group)) {
1468 A->getValue(Args)[0] == '\0')
1471 A->render(Args, CmdArgs);
1474 Args.AddAllArgs(CmdArgs, options::OPT_W_Group);
1475 Args.AddLastArg(CmdArgs, options::OPT_pedantic);
1476 Args.AddLastArg(CmdArgs, options::OPT_pedantic_errors);
1477 Args.AddLastArg(CmdArgs, options::OPT_w);
1484 if (Arg *Std = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi)) {
1491 Std->render(Args, CmdArgs);
1493 if (Arg *A = Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi,
1496 A->render(Args, CmdArgs);
1505 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ,
1507 Args.AddLastArg(CmdArgs, options::OPT_trigraphs);
1512 if (Args.hasFlag(options::OPT_Wwrite_strings, options::OPT_Wno_write_strings,
1523 Args.hasFlag(options::OPT_Wdeprecated, options::OPT_Wno_deprecated,
1529 if (Arg *Asm = Args.getLastArg(options::OPT_fasm, options::OPT_fno_asm)) {
1536 if (ShouldDisableCFI(Args, getToolChain()))
1539 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_depth_)) {
1541 CmdArgs.push_back(A->getValue(Args));
1544 if (Arg *A = Args.getLastArg(options::OPT_Wlarge_by_value_copy_EQ,
1548 CmdArgs.push_back(A->getValue(Args));
1553 if (Args.hasArg(options::OPT__relocatable_pch))
1556 if (Arg *A = Args.getLastArg(options::OPT_fconstant_string_class_EQ)) {
1558 CmdArgs.push_back(A->getValue(Args));
1561 if (Arg *A = Args.getLastArg(options::OPT_ftabstop_EQ)) {
1563 CmdArgs.push_back(A->getValue(Args));
1567 if (Arg *A = Args.getLastArg(options::OPT_ferror_limit_EQ))
1568 CmdArgs.push_back(A->getValue(Args));
1572 if (Arg *A = Args.getLastArg(options::OPT_fmacro_backtrace_limit_EQ)) {
1574 CmdArgs.push_back(A->getValue(Args));
1577 if (Arg *A = Args.getLastArg(options::OPT_ftemplate_backtrace_limit_EQ)) {
1579 CmdArgs.push_back(A->getValue(Args));
1584 if (Arg *A = Args.getLastArg(options::OPT_fmessage_length_EQ)) {
1585 CmdArgs.push_back(A->getValue(Args));
1590 CmdArgs.push_back(Args.MakeArgString(llvm::Twine(N)));
1593 if (const Arg *A = Args.getLastArg(options::OPT_fvisibility_EQ)) {
1595 CmdArgs.push_back(A->getValue(Args));
1598 Args.AddLastArg(CmdArgs, options::OPT_fvisibility_inlines_hidden);
1601 if (KernelOrKext || Args.hasFlag(options::OPT_ffreestanding,
1607 Args.AddLastArg(CmdArgs, options::OPT_fcatch_undefined_behavior);
1608 Args.AddLastArg(CmdArgs, options::OPT_femit_all_decls);
1609 Args.AddLastArg(CmdArgs, options::OPT_fheinous_gnu_extensions);
1610 Args.AddLastArg(CmdArgs, options::OPT_flimit_debug_info);
1612 Args.AddLastArg(CmdArgs, options::OPT_pg);
1615 if (!Args.hasFlag(options::OPT_flax_vector_conversions,
1619 if (Args.getLastArg(options::OPT_fapple_kext))
1622 Args.AddLastArg(CmdArgs, options::OPT_fobjc_sender_dependent_dispatch);
1623 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_print_source_range_info);
1624 Args.AddLastArg(CmdArgs, options::OPT_fdiagnostics_parseable_fixits);
1625 Args.AddLastArg(CmdArgs, options::OPT_ftime_report);
1626 Args.AddLastArg(CmdArgs, options::OPT_ftrapv);
1628 if (Arg *A = Args.getLastArg(options::OPT_ftrapv_handler_EQ)) {
1630 CmdArgs.push_back(A->getValue(Args));
1634 if (Arg *A = Args.getLastArg(options::OPT_ftrap_function_EQ)) {
1635 llvm::StringRef FuncName = A->getValue(Args);
1637 CmdArgs.push_back(Args.MakeArgString("-trap-func=" + FuncName));
1642 if (Arg *A = Args.getLastArg(options::OPT_fwrapv,
1646 } else if (Arg *A = Args.getLastArg(options::OPT_fstrict_overflow,
1651 Args.AddLastArg(CmdArgs, options::OPT_fwritable_strings);
1652 Args.AddLastArg(CmdArgs, options::OPT_funroll_loops);
1654 Args.AddLastArg(CmdArgs, options::OPT_pthread);
1658 if (Arg *A = Args.getLastArg(options::OPT_fno_stack_protector,
1669 CmdArgs.push_back(Args.MakeArgString(llvm::Twine(StackProtectorLevel)));
1673 if (Args.hasArg(options::OPT_mstackrealign)) {
1681 if (Args.hasArg(options::OPT_mkernel)) {
1682 if (!Args.hasArg(options::OPT_fapple_kext) && types::isCXX(InputType))
1684 if (!Args.hasArg(options::OPT_fbuiltin))
1688 else if (!Args.hasFlag(options::OPT_fbuiltin, options::OPT_fno_builtin))
1691 if (!Args.hasFlag(options::OPT_fassume_sane_operator_new,
1696 if (Args.hasFlag(options::OPT_fblocks, options::OPT_fno_blocks,
1698 (Args.hasArg(options::OPT_fgnu_runtime) &&
1699 Args.hasArg(options::OPT_fobjc_nonfragile_abi) &&
1700 !Args.hasArg(options::OPT_fno_blocks))) {
1705 if (Args.hasFlag(options::OPT_fno_access_control,
1711 if (Args.hasFlag(options::OPT_fno_elide_constructors,
1718 !Args.hasFlag(options::OPT_frtti, options::OPT_fno_rtti))
1723 if (Args.hasFlag(options::OPT_fshort_enums,
1728 if (!Args.hasFlag(options::OPT_fsigned_char, options::OPT_funsigned_char,
1733 if (!Args.hasFlag(options::OPT_fthreadsafe_statics,
1739 !Args.hasFlag(options::OPT_fuse_cxa_atexit, options::OPT_fno_use_cxa_atexit,
1745 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions,
1750 if (Args.hasFlag(options::OPT_fms_extensions, options::OPT_fno_ms_extensions,
1752 Args.hasArg(options::OPT_fmsc_version)) {
1753 llvm::StringRef msc_ver = Args.getLastArgValue(options::OPT_fmsc_version);
1757 CmdArgs.push_back(Args.MakeArgString("-fmsc-version=" + msc_ver));
1762 if (Args.hasFlag(options::OPT_fborland_extensions,
1767 if (Args.hasFlag(options::OPT_fdelayed_template_parsing,
1774 if (Arg *A = Args.getLastArg(options::OPT_fgnu_keywords,
1776 A->render(Args, CmdArgs);
1778 if (Args.hasFlag(options::OPT_fgnu89_inline,
1789 if (Args.hasFlag(options::OPT_fnext_runtime, options::OPT_fgnu_runtime,
1811 if (Arg *A = Args.getLastArg(options::OPT_fobjc_abi_version_EQ)) {
1812 if (llvm::StringRef(A->getValue(Args)) == "1")
1814 else if (llvm::StringRef(A->getValue(Args)) == "2")
1816 else if (llvm::StringRef(A->getValue(Args)) == "3")
1819 D.Diag(clang::diag::err_drv_clang_unsupported) << A->getAsString(Args);
1822 if (Args.hasFlag(options::OPT_fobjc_nonfragile_abi,
1832 if (Arg *A = Args.getLastArg(
1834 if (llvm::StringRef(A->getValue(Args)) == "1")
1836 else if (llvm::StringRef(A->getValue(Args)) == "2")
1840 << A->getAsString(Args);
1854 if (!Args.hasFlag(options::OPT_fobjc_legacy_dispatch,
1870 if (Args.hasFlag(options::OPT_fobjc_default_synthesize_properties,
1880 bool ARC = isObjCAutoRefCount(Args);
1886 if (Args.hasFlag(options::OPT_fobjc_arc_exceptions,
1899 const Arg *GCArg = Args.getLastArg(options::OPT_fobjc_gc_only);
1901 GCArg = Args.getLastArg(options::OPT_fobjc_gc);
1905 << GCArg->getAsString(Args);
1907 GCArg->render(Args, CmdArgs);
1911 << GCArg->getAsString(Args);
1915 // Add exception args.
1916 addExceptionArgs(Args, InputType, getToolChain().getTriple(),
1923 if (!Args.hasFlag(options::OPT_fassume_sane_operator_new,
1929 if (!Args.hasFlag(options::OPT_fconstant_cfstrings,
1931 !Args.hasFlag(options::OPT_mconstant_cfstrings,
1937 if (Arg *A = Args.getLastArg(options::OPT_fshort_wchar))
1938 A->render(Args, CmdArgs);
1945 if (Args.hasFlag(options::OPT_fpascal_strings,
1948 Args.hasFlag(options::OPT_mpascal_strings,
1953 if (Args.hasArg(options::OPT_mkernel) ||
1954 Args.hasArg(options::OPT_fapple_kext)) {
1955 if (!Args.hasArg(options::OPT_fcommon))
1959 else if (!Args.hasFlag(options::OPT_fcommon, options::OPT_fno_common))
1964 if (!Args.hasFlag(options::OPT_fsigned_bitfields,
1967 << Args.getLastArg(options::OPT_funsigned_bitfields)->getAsString(Args);
1970 if (!Args.hasFlag(options::OPT_ffor_scope,
1973 << Args.getLastArg(options::OPT_fno_for_scope)->getAsString(Args);
1976 if (!Args.hasFlag(options::OPT_fcaret_diagnostics,
1981 if (!Args.hasFlag(options::OPT_fdiagnostics_fixit_info,
1986 if (Args.hasFlag(options::OPT_fdiagnostics_show_name,
1991 if (Args.hasFlag(options::OPT_fdiagnostics_show_option,
1996 Args.getLastArg(options::OPT_fdiagnostics_show_category_EQ)) {
1998 CmdArgs.push_back(A->getValue(Args));
2002 Args.getLastArg(options::OPT_fdiagnostics_format_EQ)) {
2004 CmdArgs.push_back(A->getValue(Args));
2007 if (Arg *A = Args.getLastArg(
2019 if (Args.hasFlag(options::OPT_fcolor_diagnostics,
2024 if (!Args.hasFlag(options::OPT_fshow_source_location,
2028 if (!Args.hasFlag(options::OPT_fshow_column,
2033 if (!Args.hasFlag(options::OPT_fspell_checking,
2039 (void) Args.hasFlag(options::OPT_fasm_blocks, options::OPT_fno_asm_blocks,
2042 if (Arg *A = Args.getLastArg(options::OPT_fshow_overloads_EQ))
2043 A->render(Args, CmdArgs);
2047 if (Arg *A = Args.getLastArg(options::OPT_fdollars_in_identifiers,
2057 if (Arg *A = Args.getLastArg(options::OPT_funit_at_a_time,
2060 D.Diag(clang::diag::warn_drv_clang_unsupported) << A->getAsString(Args);
2070 if (!Args.hasArg(options::OPT_fbuiltin_strcat))
2072 if (!Args.hasArg(options::OPT_fbuiltin_strcpy))
2078 if (Arg *A = Args.getLastArg(options::OPT_traditional,
2083 D.Diag(clang::diag::err_drv_clang_unsupported) << A->getAsString(Args);
2086 Args.AddLastArg(CmdArgs, options::OPT_dM);
2087 Args.AddLastArg(CmdArgs, options::OPT_dD);
2091 Args.AddAllArgValues(CmdArgs, options::OPT_Xclang);
2092 for (arg_iterator it = Args.filtered_begin(options::OPT_mllvm),
2093 ie = Args.filtered_end(); it != ie; ++it) {
2098 if (llvm::StringRef((*it)->getValue(Args, 0)) == "-disable-llvm-optzns")
2101 (*it)->render(Args, CmdArgs);
2121 II.getInputArg().renderAsInput(Args, CmdArgs);
2124 Args.AddAllArgs(CmdArgs, options::OPT_undef);
2132 for (ArgList::const_iterator it = Args.begin(),
2133 ie = Args.end(); it != ie; ++it)
2134 (*it)->render(Args, OriginalArgs);
2143 CmdArgs.push_back(Args.MakeArgString(Flags.str()));
2148 if (Arg *A = Args.getLastArg(options::OPT_pg))
2149 if (Args.hasArg(options::OPT_fomit_frame_pointer))
2151 << "-fomit-frame-pointer" << A->getAsString(Args);
2158 Args.ClaimAllArgs(options::OPT_fpch_preprocess);
2162 Args.ClaimAllArgs(options::OPT_clang_ignored_f_Group);
2163 Args.ClaimAllArgs(options::OPT_clang_ignored_m_Group);
2166 Args.ClaimAllArgs(options::OPT_use_gold_plugin);
2167 Args.ClaimAllArgs(options::OPT_emit_llvm);
2173 const ArgList &Args,
2181 Args.ClaimAllArgs(options::OPT_w);
2183 Args.ClaimAllArgs(options::OPT_emit_llvm);
2185 Args.ClaimAllArgs(options::OPT_use_gold_plugin);
2194 std::string TripleStr = getToolChain().ComputeEffectiveClangTriple(Args);
2195 CmdArgs.push_back(Args.MakeArgString(TripleStr));
2202 if (UseRelaxAll(C, Args))
2206 (void) Args.hasArg(options::OPT_force__cpusubtype__ALL);
2212 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
2214 Args.AddAllArgs(CmdArgs, options::OPT_mllvm);
2230 const ArgList &Args,
2236 it = Args.begin(), ie = Args.end(); it != ie; ++it) {
2249 A->render(Args, CmdArgs);
2266 CmdArgs.push_back(Args.MakeArgString(Arch));
2326 A.render(Args, CmdArgs);
2345 Args.MakeArgString(getToolChain().GetProgramPath(GCCName));
2406 const char *darwin::CC1::getBaseInputName(const ArgList &Args,
2408 return Args.MakeArgString(
2412 const char *darwin::CC1::getBaseInputStem(const ArgList &Args,
2414 const char *Str = getBaseInputName(Args, Inputs);
2417 return Args.MakeArgString(std::string(Str, End));
2423 darwin::CC1::getDependencyFileName(const ArgList &Args,
2428 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) {
2429 std::string Str(OutputOpt->getValue(Args));
2433 Res = darwin::CC1::getBaseInputStem(Args, Inputs);
2435 return Args.MakeArgString(Res + ".d");
2438 void darwin::CC1::AddCC1Args(const ArgList &Args,
2442 CheckCodeGenerationOptions(D, Args);
2445 if (!Args.hasArg(options::OPT_mkernel) && !Args.hasArg(options::OPT_static) &&
2446 !Args.hasArg(options::OPT_mdynamic_no_pic))
2451 if (!Args.hasArg(options::OPT_fbuiltin_strcat))
2453 if (!Args.hasArg(options::OPT_fbuiltin_strcpy))
2457 if (Args.hasArg(options::OPT_g_Flag) &&
2458 !Args.hasArg(options::OPT_fno_eliminate_unused_debug_symbols))
2462 void darwin::CC1::AddCC1OptionsArgs(const ArgList &Args, ArgStringList &CmdArgs,
2468 if (Args.hasArg(options::OPT_fast) ||
2469 Args.hasArg(options::OPT_fastf) ||
2470 Args.hasArg(options::OPT_fastcp))
2473 if (Arg *A = Args.getLastArg(options::OPT_pg))
2474 if (Args.hasArg(options::OPT_fomit_frame_pointer))
2476 << A->getAsString(Args) << "-fomit-frame-pointer";
2478 AddCC1Args(Args, CmdArgs);
2480 if (!Args.hasArg(options::OPT_Q))
2484 CmdArgs.push_back(darwin::CC1::getBaseInputName(Args, Inputs));
2486 Args.AddAllArgs(CmdArgs, options::OPT_d_Group);
2488 Args.AddAllArgs(CmdArgs, options::OPT_m_Group);
2489 Args.AddAllArgs(CmdArgs, options::OPT_a_Group);
2494 if ((Args.hasArg(options::OPT_c) || Args.hasArg(options::OPT_S)) &&
2495 Args.hasArg(options::OPT_o)) {
2496 Arg *OutputOpt = Args.getLastArg(options::OPT_o);
2498 CmdArgs.push_back(OutputOpt->getValue(Args));
2501 CmdArgs.push_back(darwin::CC1::getBaseInputStem(Args, Inputs));
2504 Args.AddAllArgs(CmdArgs, options::OPT_g_Group);
2506 Args.AddAllArgs(CmdArgs, options::OPT_O);
2508 Args.AddAllArgs(CmdArgs, options::OPT_W_Group, options::OPT_pedantic_Group);
2509 Args.AddLastArg(CmdArgs, options::OPT_w);
2510 Args.AddAllArgs(CmdArgs, options::OPT_std_EQ, options::OPT_ansi,
2512 if (!Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi)) {
2514 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ,
2518 if (Args.hasArg(options::OPT_v))
2520 if (Args.hasArg(options::OPT_pg) &&
2523 Args.AddLastArg(CmdArgs, options::OPT_p);
2531 // FIXME: Should we grow a better way to deal with "removing" args?
2532 for (arg_iterator it = Args.filtered_begin(options::OPT_f_Group,
2534 ie = Args.filtered_end(); it != ie; ++it) {
2538 (*it)->render(Args, CmdArgs);
2542 Args.AddAllArgs(CmdArgs, options::OPT_f_Group, options::OPT_fsyntax_only);
2545 Args.ClaimAllArgs(options::OPT_f_clang_Group);
2547 Args.AddAllArgs(CmdArgs, options::OPT_undef);
2548 if (Args.hasArg(options::OPT_Qn))
2552 //Args.AddLastArg(CmdArgs, options::OPT__help)
2553 //Args.AddLastArg(CmdArgs, options::OPT__targetHelp)
2558 Args.AddAllArgs(CmdArgs, options::OPT__param);
2560 if (Args.hasArg(options::OPT_fmudflap) ||
2561 Args.hasArg(options::OPT_fmudflapth)) {
2566 if (Args.hasArg(options::OPT_coverage)) {
2575 void darwin::CC1::AddCPPOptionsArgs(const ArgList &Args, ArgStringList &CmdArgs,
2579 AddCPPUniqueOptionsArgs(Args, CmdArgs, Inputs);
2583 AddCC1Args(Args, CmdArgs);
2590 Args.AddAllArgs(CmdArgs, options::OPT_m_Group);
2591 Args.AddAllArgs(CmdArgs, options::OPT_std_EQ, options::OPT_ansi,
2593 if (!Args.getLastArg(options::OPT_std_EQ, options::OPT_ansi)) {
2595 Args.AddAllArgsTranslated(CmdArgs, options::OPT_std_default_EQ,
2598 Args.AddAllArgs(CmdArgs, options::OPT_W_Group, options::OPT_pedantic_Group);
2599 Args.AddLastArg(CmdArgs, options::OPT_w);
2602 Args.AddAllArgs(CmdArgs, options::OPT_f_Group, options::OPT_fsyntax_only);
2605 Args.ClaimAllArgs(options::OPT_f_clang_Group);
2607 if (Args.hasArg(options::OPT_g_Group) && !Args.hasArg(options::OPT_g0) &&
2608 !Args.hasArg(options::OPT_fno_working_directory))
2611 Args.AddAllArgs(CmdArgs, options::OPT_O);
2612 Args.AddAllArgs(CmdArgs, options::OPT_undef);
2613 if (Args.hasArg(options::OPT_save_temps))
2617 void darwin::CC1::AddCPPUniqueOptionsArgs(const ArgList &Args,
2622 CheckPreprocessingOptions(D, Args);
2626 Args.AddLastArg(CmdArgs, options::OPT_C);
2627 Args.AddLastArg(CmdArgs, options::OPT_CC);
2628 if (!Args.hasArg(options::OPT_Q))
2630 Args.AddAllArgs(CmdArgs, options::OPT_nostdinc);
2631 Args.AddAllArgs(CmdArgs, options::OPT_nostdincxx);
2632 Args.AddLastArg(CmdArgs, options::OPT_v);
2633 Args.AddAllArgs(CmdArgs, options::OPT_I_Group, options::OPT_F);
2634 Args.AddLastArg(CmdArgs, options::OPT_P);
2642 if (Args.hasArg(options::OPT_MD)) {
2644 CmdArgs.push_back(darwin::CC1::getDependencyFileName(Args, Inputs));
2647 if (Args.hasArg(options::OPT_MMD)) {
2649 CmdArgs.push_back(darwin::CC1::getDependencyFileName(Args, Inputs));
2652 Args.AddLastArg(CmdArgs, options::OPT_M);
2653 Args.AddLastArg(CmdArgs, options::OPT_MM);
2654 Args.AddAllArgs(CmdArgs, options::OPT_MF);
2655 Args.AddLastArg(CmdArgs, options::OPT_MG);
2656 Args.AddLastArg(CmdArgs, options::OPT_MP);
2657 Args.AddAllArgs(CmdArgs, options::OPT_MQ);
2658 Args.AddAllArgs(CmdArgs, options::OPT_MT);
2659 if (!Args.hasArg(options::OPT_M) && !Args.hasArg(options::OPT_MM) &&
2660 (Args.hasArg(options::OPT_MD) || Args.hasArg(options::OPT_MMD))) {
2661 if (Arg *OutputOpt = Args.getLastArg(options::OPT_o)) {
2663 CmdArgs.push_back(OutputOpt->getValue(Args));
2667 Args.AddLastArg(CmdArgs, options::OPT_remap);
2668 if (Args.hasArg(options::OPT_g3))
2670 Args.AddLastArg(CmdArgs, options::OPT_H);
2672 AddCPPArgs(Args, CmdArgs);
2674 Args.AddAllArgs(CmdArgs, options::OPT_D, options::OPT_U, options::OPT_A);
2675 Args.AddAllArgs(CmdArgs, options::OPT_i_Group);
2684 Args.AddAllArgValues(CmdArgs, options::OPT_Wp_COMMA,
2687 if (Args.hasArg(options::OPT_fmudflap)) {
2693 if (Args.hasArg(options::OPT_fmudflapth)) {
2701 void darwin::CC1::AddCPPArgs(const ArgList &Args,
2705 if (Args.hasArg(options::OPT_static)) {
2709 // if (!Args.hasArg(arglist.parser.dynamicOption))
2714 if (Args.hasArg(options::OPT_pthread))
2721 const ArgList &Args,
2729 if (Args.hasArg(options::OPT_traditional) ||
2730 Args.hasArg(options::OPT_traditional_cpp))
2738 if (Args.hasArg(options::OPT_E) || getToolChain().getDriver().CCCIsCPP) {
2739 AddCPPOptionsArgs(Args, CmdArgs, Inputs, OutputArgs);
2741 AddCPPOptionsArgs(Args, CmdArgs, Inputs, ArgStringList());
2745 Args.AddAllArgs(CmdArgs, options::OPT_d_Group);
2749 Args.MakeArgString(getToolChain().GetProgramPath(CC1Name));
2756 const ArgList &Args,
2765 if ((A = Args.getLastArg(options::OPT_traditional)))
2767 << A->getAsString(Args) << "-E";
2794 bool OutputArgsEarly = (Args.hasArg(options::OPT_fsyntax_only) ||
2795 Args.hasArg(options::OPT_S));
2798 AddCPPUniqueOptionsArgs(Args, CmdArgs, Inputs);
2800 AddCC1OptionsArgs(Args, CmdArgs, Inputs, OutputArgs);
2802 AddCC1OptionsArgs(Args, CmdArgs, Inputs, ArgStringList());
2823 AddCC1OptionsArgs(Args, CmdArgs, Inputs, OutputArgs);
2825 AddCC1OptionsArgs(Args, CmdArgs, Inputs, ArgStringList());
2844 Args.MakeArgString(getToolChain().GetProgramPath(CC1Name));
2851 const ArgList &Args,
2868 if (Args.hasArg(options::OPT_gstabs))
2870 else if (Args.hasArg(options::OPT_g_Group))
2875 AddDarwinArch(Args, CmdArgs);
2880 Args.hasArg(options::OPT_force__cpusubtype__ALL))
2884 (Args.hasArg(options::OPT_mkernel) ||
2885 Args.hasArg(options::OPT_static) ||
2886 Args.hasArg(options::OPT_fapple_kext)))
2889 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
2902 Args.MakeArgString(getToolChain().GetProgramPath("as"));
2906 void darwin::DarwinTool::AddDarwinArch(const ArgList &Args,
2908 llvm::StringRef ArchName = getDarwinToolChain().getDarwinArchName(Args);
2912 CmdArgs.push_back(Args.MakeArgString(ArchName));
2920 const ArgList &Args,
2926 if (Arg *A = Args.getLastArg(options::OPT_mlinker_version_EQ)) {
2928 if (!Driver::GetReleaseVersion(A->getValue(Args), Version[0],
2932 << A->getAsString(Args);
2942 if (Version[0] >= 100 && !Args.hasArg(options::OPT_Z_Xlinker__no_demangle) &&
2948 Args.hasArg(options::OPT_static));
2950 for (arg_iterator it = Args.filtered_begin(options::OPT_Xlinker,
2952 ie = Args.filtered_end(); it != ie; ++it) {
2955 if (llvm::StringRef(A->getValue(Args, i)) == "-kext")
2966 if (Version[0] >= 116 && D.IsUsingLTO(Args)) {
2975 Args.AddAllArgs(CmdArgs, options::OPT_static);
2976 if (!Args.hasArg(options::OPT_static))
2978 if (Args.hasArg(options::OPT_fgnu_runtime)) {
2979 // FIXME: gcc replaces -lobjc in forward args with -lobjc-gnu
2983 if (!Args.hasArg(options::OPT_dynamiclib)) {
2984 AddDarwinArch(Args, CmdArgs);
2986 Args.AddLastArg(CmdArgs, options::OPT_force__cpusubtype__ALL);
2988 Args.AddLastArg(CmdArgs, options::OPT_bundle);
2989 Args.AddAllArgs(CmdArgs, options::OPT_bundle__loader);
2990 Args.AddAllArgs(CmdArgs, options::OPT_client__name);
2993 if ((A = Args.getLastArg(options::OPT_compatibility__version)) ||
2994 (A = Args.getLastArg(options::OPT_current__version)) ||
2995 (A = Args.getLastArg(options::OPT_install__name)))
2997 << A->getAsString(Args) << "-dynamiclib";
2999 Args.AddLastArg(CmdArgs, options::OPT_force__flat__namespace);
3000 Args.AddLastArg(CmdArgs, options::OPT_keep__private__externs);
3001 Args.AddLastArg(CmdArgs, options::OPT_private__bundle);
3006 if ((A = Args.getLastArg(options::OPT_bundle)) ||
3007 (A = Args.getLastArg(options::OPT_bundle__loader)) ||
3008 (A = Args.getLastArg(options::OPT_client__name)) ||
3009 (A = Args.getLastArg(options::OPT_force__flat__namespace)) ||
3010 (A = Args.getLastArg(options::OPT_keep__private__externs)) ||
3011 (A = Args.getLastArg(options::OPT_private__bundle)))
3013 << A->getAsString(Args) << "-dynamiclib";
3015 Args.AddAllArgsTranslated(CmdArgs, options::OPT_compatibility__version,
3017 Args.AddAllArgsTranslated(CmdArgs, options::OPT_current__version,
3020 AddDarwinArch(Args, CmdArgs);
3022 Args.AddAllArgsTranslated(CmdArgs, options::OPT_install__name,
3026 Args.AddLastArg(CmdArgs, options::OPT_all__load);
3027 Args.AddAllArgs(CmdArgs, options::OPT_allowable__client);
3028 Args.AddLastArg(CmdArgs, options::OPT_bind__at__load);
3030 Args.AddLastArg(CmdArgs, options::OPT_arch__errors__fatal);
3031 Args.AddLastArg(CmdArgs, options::OPT_dead__strip);
3032 Args.AddLastArg(CmdArgs, options::OPT_no__dead__strip__inits__and__terms);
3033 Args.AddAllArgs(CmdArgs, options::OPT_dylib__file);
3034 Args.AddLastArg(CmdArgs, options::OPT_dynamic);
3035 Args.AddAllArgs(CmdArgs, options::OPT_exported__symbols__list);
3036 Args.AddLastArg(CmdArgs, options::OPT_flat__namespace);
3037 Args.AddAllArgs(CmdArgs, options::OPT_force__load);
3038 Args.AddAllArgs(CmdArgs, options::OPT_headerpad__max__install__names);
3039 Args.AddAllArgs(CmdArgs, options::OPT_image__base);
3040 Args.AddAllArgs(CmdArgs, options::OPT_init);
3053 if (Args.hasArg(options::OPT_mios_simulator_version_min_EQ))
3059 CmdArgs.push_back(Args.MakeArgString(llvm::Twine(TargetVersion[0]) + "." +
3063 Args.AddLastArg(CmdArgs, options::OPT_nomultidefs);
3064 Args.AddLastArg(CmdArgs, options::OPT_multi__module);
3065 Args.AddLastArg(CmdArgs, options::OPT_single__module);
3066 Args.AddAllArgs(CmdArgs, options::OPT_multiply__defined);
3067 Args.AddAllArgs(CmdArgs, options::OPT_multiply__defined__unused);
3069 if (const Arg *A = Args.getLastArg(options::OPT_fpie, options::OPT_fPIE,
3079 Args.AddLastArg(CmdArgs, options::OPT_prebind);
3080 Args.AddLastArg(CmdArgs, options::OPT_noprebind);
3081 Args.AddLastArg(CmdArgs, options::OPT_nofixprebinding);
3082 Args.AddLastArg(CmdArgs, options::OPT_prebind__all__twolevel__modules);
3083 Args.AddLastArg(CmdArgs, options::OPT_read__only__relocs);
3084 Args.AddAllArgs(CmdArgs, options::OPT_sectcreate);
3085 Args.AddAllArgs(CmdArgs, options::OPT_sectorder);
3086 Args.AddAllArgs(CmdArgs, options::OPT_seg1addr);
3087 Args.AddAllArgs(CmdArgs, options::OPT_segprot);
3088 Args.AddAllArgs(CmdArgs, options::OPT_segaddr);
3089 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__only__addr);
3090 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__write__addr);
3091 Args.AddAllArgs(CmdArgs, options::OPT_seg__addr__table);
3092 Args.AddAllArgs(CmdArgs, options::OPT_seg__addr__table__filename);
3093 Args.AddAllArgs(CmdArgs, options::OPT_sub__library);
3094 Args.AddAllArgs(CmdArgs, options::OPT_sub__umbrella);
3098 if (const Arg *A = Args.getLastArg(options::OPT__sysroot_EQ)) {
3100 CmdArgs.push_back(A->getValue(Args));
3101 } else if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) {
3103 CmdArgs.push_back(A->getValue(Args));
3109 Args.AddLastArg(CmdArgs, options::OPT_twolevel__namespace);
3110 Args.AddLastArg(CmdArgs, options::OPT_twolevel__namespace__hints);
3111 Args.AddAllArgs(CmdArgs, options::OPT_umbrella);
3112 Args.AddAllArgs(CmdArgs, options::OPT_undefined);
3113 Args.AddAllArgs(CmdArgs, options::OPT_unexported__symbols__list);
3114 Args.AddAllArgs(CmdArgs, options::OPT_weak__reference__mismatches);
3115 Args.AddLastArg(CmdArgs, options::OPT_X_Flag);
3116 Args.AddAllArgs(CmdArgs, options::OPT_y);
3117 Args.AddLastArg(CmdArgs, options::OPT_w);
3118 Args.AddAllArgs(CmdArgs, options::OPT_pagezero__size);
3119 Args.AddAllArgs(CmdArgs, options::OPT_segs__read__);
3120 Args.AddLastArg(CmdArgs, options::OPT_seglinkedit);
3121 Args.AddLastArg(CmdArgs, options::OPT_noseglinkedit);
3122 Args.AddAllArgs(CmdArgs, options::OPT_sectalign);
3123 Args.AddAllArgs(CmdArgs, options::OPT_sectobjectsymbols);
3124 Args.AddAllArgs(CmdArgs, options::OPT_segcreate);
3125 Args.AddLastArg(CmdArgs, options::OPT_whyload);
3126 Args.AddLastArg(CmdArgs, options::OPT_whatsloaded);
3127 Args
3128 Args.AddLastArg(CmdArgs, options::OPT_dylinker);
3129 Args.AddLastArg(CmdArgs, options::OPT_Mach);
3135 const ArgList &Args,
3146 AddLinkArgs(C, Args, CmdArgs);
3148 Args.AddAllArgs(CmdArgs, options::OPT_d_Flag);
3149 Args.AddAllArgs(CmdArgs, options::OPT_s);
3150 Args.AddAllArgs(CmdArgs, options::OPT_t);
3151 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
3152 Args.AddAllArgs(CmdArgs, options::OPT_u_Group);
3153 Args.AddAllArgs(CmdArgs, options::OPT_A);
3154 Args.AddLastArg(CmdArgs, options::OPT_e);
3155 Args.AddAllArgs(CmdArgs, options::OPT_m_Separate);
3156 Args.AddAllArgs(CmdArgs, options::OPT_r);
3161 if (Args.hasArg(options::OPT_ObjC) || Args.hasArg(options::OPT_ObjCXX))
3167 if (!Args.hasArg(options::OPT_A) &&
3168 !Args.hasArg(options::OPT_nostdlib) &&
3169 !Args.hasArg(options::OPT_nostartfiles)) {
3171 if (Args.hasArg(options::OPT_dynamiclib)) {
3186 if (Args.hasArg(options::OPT_bundle)) {
3187 if (!Args.hasArg(options::OPT_static)) {
3201 if (Args.hasArg(options::OPT_pg) &&
3203 if (Args.hasArg(options::OPT_static) ||
3204 Args.hasArg(options::OPT_object) ||
3205 Args.hasArg(options::OPT_preload)) {
3213 if (Args.hasArg(options::OPT_static) ||
3214 Args.hasArg(options::OPT_object) ||
3215 Args.hasArg(options::OPT_preload)) {
3243 Args.hasArg(options::OPT_shared_libgcc) &&
3246 Args.MakeArgString(getToolChain().GetFilePath("crt3.o"));
3251 Args.AddAllArgs(CmdArgs, options::OPT_L);
3253 if (Args.hasArg(options::OPT_fopenmp))
3257 getDarwinToolChain().AddLinkSearchPathArgs(Args, CmdArgs);
3262 if (isObjCAutoRefCount(Args)) {
3266 getDarwinToolChain().AddLinkARCArgs(Args, CmdArgs);
3269 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
3277 if (Args.hasArg(options::OPT_fnested_functions))
3280 if (!Args.hasArg(options::OPT_nostdlib) &&
3281 !Args.hasArg(options::OPT_nodefaultlibs)) {
3283 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
3288 getDarwinToolChain().AddLinkRuntimeLibArgs(Args, CmdArgs);
3291 if (!Args.hasArg(options::OPT_A) &&
3292 !Args.hasArg(options::OPT_nostdlib) &&
3293 !Args.hasArg(options::OPT_nostartfiles)) {
3297 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
3299 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
3300 Args.AddAllArgs(CmdArgs, options::OPT_F);
3303 Args.MakeArgString(getToolChain().GetProgramPath("ld"));
3310 const ArgList &Args,
3327 Args.MakeArgString(getToolChain().GetProgramPath("lipo"));
3334 const ArgList &Args,
3347 Args.MakeArgString(getToolChain().GetProgramPath("dsymutil"));
3354 const ArgList &Args,
3358 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
3371 Args.MakeArgString(getToolChain().GetProgramPath("gas"));
3378 const ArgList &Args,
3382 if ((!Args.hasArg(options::OPT_nostdlib)) &&
3383 (!Args.hasArg(options::OPT_shared))) {
3388 if (Args.hasArg(options::OPT_static)) {
3394 if (Args.hasArg(options::OPT_shared)) {
3409 if (!Args.hasArg(options::OPT_nostdlib) &&
3410 !Args.hasArg(options::OPT_nostartfiles)) {
3411 if (!Args.hasArg(options::OPT_shared)) {
3412 CmdArgs.push_back(Args.MakeArgString(
3414 CmdArgs.push_back(Args.MakeArgString(
3416 CmdArgs.push_back(Args.MakeArgString(
3419 CmdArgs.push_back(Args.MakeArgString(
3422 CmdArgs.push_back(Args.MakeArgString(
3426 CmdArgs.push_back(Args.MakeArgString("-L/opt/gcc4/lib/gcc/"
3430 Args.AddAllArgs(CmdArgs, options::OPT_L);
3431 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
3432 Args.AddAllArgs(CmdArgs, options::OPT_e);
3434 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
3436 if (!Args.hasArg(options::OPT_nostdlib) &&
3437 !Args.hasArg(options::OPT_nodefaultlibs)) {
3442 if (Args.hasArg(options::OPT_pthread))
3444 if (!Args.hasArg(options::OPT_shared))
3449 if (!Args.hasArg(options::OPT_nostdlib) &&
3450 !Args.hasArg(options::OPT_nostartfiles)) {
3451 if (!Args.hasArg(options::OPT_shared))
3452 CmdArgs.push_back(Args.MakeArgString(
3456 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
3459 Args.MakeArgString(getToolChain().GetProgramPath("ld"));
3466 const ArgList &Args,
3470 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
3483 Args.MakeArgString(getToolChain().GetProgramPath("as"));
3490 const ArgList &Args,
3495 if ((!Args.hasArg(options::OPT_nostdlib)) &&
3496 (!Args.hasArg(options::OPT_shared))) {
3501 if (Args.hasArg(options::OPT_static)) {
3504 if (Args.hasArg(options::OPT_rdynamic))
3508 if (Args.hasArg(options::OPT_shared)) {
3523 if (!Args.hasArg(options::OPT_nostdlib) &&
3524 !Args.hasArg(options::OPT_nostartfiles)) {
3525 if (!Args.hasArg(options::OPT_shared)) {
3526 CmdArgs.push_back(Args.MakeArgString(
3528 CmdArgs.push_back(Args.MakeArgString(
3531 CmdArgs.push_back(Args.MakeArgString(
3539 CmdArgs.push_back(Args.MakeArgString("-L/usr/lib/gcc-lib/" + Triple +
3542 Args.AddAllArgs(CmdArgs, options::OPT_L);
3543 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
3544 Args.AddAllArgs(CmdArgs, options::OPT_e);
3546 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
3548 if (!Args.hasArg(options::OPT_nostdlib) &&
3549 !Args.hasArg(options::OPT_nodefaultlibs)) {
3551 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
3559 if (Args.hasArg(options::OPT_pthread))
3561 if (!Args.hasArg(options::OPT_shared))
3566 if (!Args.hasArg(options::OPT_nostdlib) &&
3567 !Args.hasArg(options::OPT_nostartfiles)) {
3568 if (!Args.hasArg(options::OPT_shared))
3569 CmdArgs.push_back(Args.MakeArgString(
3572 CmdArgs.push_back(Args.MakeArgString(
3577 Args
3584 const ArgList &Args,
3602 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
3615 Args.MakeArgString(getToolChain().GetProgramPath("as"));
3622 const ArgList &Args,
3628 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
3630 if (Args.hasArg(options::OPT_static)) {
3633 if (Args.hasArg(options::OPT_rdynamic))
3636 if (Args.hasArg(options::OPT_shared)) {
3663 if (!Args.hasArg(options::OPT_nostdlib) &&
3664 !Args.hasArg(options::OPT_nostartfiles)) {
3665 if (!Args.hasArg(options::OPT_shared)) {
3666 if (Args.hasArg(options::OPT_pg))
3667 CmdArgs.push_back(Args.MakeArgString(
3670 CmdArgs.push_back(Args.MakeArgString(
3672 CmdArgs.push_back(Args.MakeArgString(
3674 CmdArgs.push_back(Args.MakeArgString(
3677 CmdArgs.push_back(Args.MakeArgString(
3679 CmdArgs.push_back(Args.MakeArgString(
3684 Args.AddAllArgs(CmdArgs, options::OPT_L);
3688 CmdArgs.push_back(Args.MakeArgString(llvm::StringRef("-L") + *i));
3689 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
3690 Args.AddAllArgs(CmdArgs, options::OPT_e);
3691 Args.AddAllArgs(CmdArgs, options::OPT_s);
3692 Args.AddAllArgs(CmdArgs, options::OPT_t);
3693 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
3694 Args.AddAllArgs(CmdArgs, options::OPT_r);
3696 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
3698 if (!Args.hasArg(options::OPT_nostdlib) &&
3699 !Args.hasArg(options::OPT_nodefaultlibs)) {
3701 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
3702 if (Args.hasArg(options::OPT_pg))
3709 if (Args.hasArg(options::OPT_pg))
3713 if (Args.hasArg(options::OPT_static)) {
3715 } else if (Args.hasArg(options::OPT_pg)) {
3723 if (Args.hasArg(options::OPT_pthread)) {
3724 if (Args.hasArg(options::OPT_pg))
3730 if (Args.hasArg(options::OPT_pg)) {
3731 if (Args.hasArg(options::OPT_shared))
3741 if (Args.hasArg(options::OPT_static)) {
3743 } else if (Args.hasArg(options::OPT_pg)) {
3752 if (!Args.hasArg(options::OPT_nostdlib) &&
3753 !Args.hasArg(options::OPT_nostartfiles)) {
3754 if (!Args.hasArg(options::OPT_shared))
3755 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
3758 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
3760 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
3764 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
3767 Args.MakeArgString(getToolChain().GetProgramPath("ld"));
3774 const ArgList &Args,
3791 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
3803 const char *Exec = Args.MakeArgString(FindTargetProgramPath(getToolChain(),
3812 const ArgList &Args,
3818 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
3820 if (Args.hasArg(options::OPT_static)) {
3823 if (Args.hasArg(options::OPT_rdynamic))
3826 if (Args.hasArg(options::OPT_shared)) {
3849 if (!Args.hasArg(options::OPT_nostdlib) &&
3850 !Args.hasArg(options::OPT_nostartfiles)) {
3851 if (!Args.hasArg(options::OPT_shared)) {
3852 CmdArgs.push_back(Args.MakeArgString(
3854 CmdArgs.push_back(Args.MakeArgString(
3856 CmdArgs.push_back(Args.MakeArgString(
3859 CmdArgs.push_back(Args.MakeArgString(
3861 CmdArgs.push_back(Args.MakeArgString(
3866 Args.AddAllArgs(CmdArgs, options::OPT_L);
3867 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
3868 Args.AddAllArgs(CmdArgs, options::OPT_e);
3869 Args.AddAllArgs(CmdArgs, options::OPT_s);
3870 Args.AddAllArgs(CmdArgs, options::OPT_t);
3871 Args.AddAllArgs(CmdArgs, options::OPT_Z_Flag);
3872 Args.AddAllArgs(CmdArgs, options::OPT_r);
3874 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
3876 if (!Args.hasArg(options::OPT_nostdlib) &&
3877 !Args.hasArg(options::OPT_nodefaultlibs)) {
3879 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
3884 if (Args.hasArg(options::OPT_static)) {
3893 if (Args.hasArg(options::OPT_pthread))
3898 if (Args.hasArg(options::OPT_static)) {
3907 if (!Args.hasArg(options::OPT_nostdlib) &&
3908 !Args.hasArg(options::OPT_nostartfiles)) {
3909 if (!Args.hasArg(options::OPT_shared))
3910 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
3913 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
3915 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
3919 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
3921 const char *Exec = Args.MakeArgString(FindTargetProgramPath(getToolChain(),
3930 const ArgList &Args,
3946 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
3959 Args.MakeArgString(getToolChain().GetProgramPath("as"));
3966 const ArgList &Args,
3974 Args.ClaimAllArgs(options::OPT_g_Group);
3976 Args.ClaimAllArgs(options::OPT_emit_llvm);
3979 Args.ClaimAllArgs(options::OPT_w);
3982 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
3984 if (Args.hasArg(options::OPT_pie))
3987 if (Args.hasArg(options::OPT_rdynamic))
3990 if (Args.hasArg(options::OPT_s))
3998 if (!Args.hasArg(options::OPT_static)) {
4015 if (Args.hasArg(options::OPT_static)) {
4021 } else if (Args.hasArg(options::OPT_shared)) {
4027 (!Args.hasArg(options::OPT_static) &&
4028 !Args.hasArg(options::OPT_shared))) {
4046 if (!Args.hasArg(options::OPT_nostdlib) &&
4047 !Args.hasArg(options::OPT_nostartfiles)) {
4049 if (!Args.hasArg(options::OPT_shared)){
4050 if (Args.hasArg(options::OPT_pie))
4056 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crt1)));
4058 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crti.o")));
4061 if (Args.hasArg(options::OPT_static))
4063 else if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
4067 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtbegin)));
4070 Args.AddAllArgs(CmdArgs, options::OPT_L);
4076 CmdArgs.push_back(Args.MakeArgString(llvm::StringRef("-L") + *i));
4078 AddLinkerInputs(ToolChain, Inputs, Args, CmdArgs);
4080 if (D.CCCIsCXX && !Args.hasArg(options::OPT_nostdlib)) {
4081 ToolChain.AddCXXStdlibLibArgs(Args, CmdArgs);
4085 if (!Args.hasArg(options::OPT_nostdlib)) {
4086 if (Args.hasArg(options::OPT_static))
4092 if (Args.hasArg(options::OPT_static)) {
4103 if (Args.hasArg(options::OPT_static))
4105 else if (!Args.hasArg(options::OPT_shared) && D.CCCIsCXX)
4108 if (Args.hasArg(options::OPT_pthread) ||
4109 Args.hasArg(options::OPT_pthreads))
4114 if (Args.hasArg(options::OPT_static))
4126 if (!Args.hasArg(options::OPT_shared) && D.CCCIsCXX)
4131 if (!Args.hasArg(options::OPT_nostartfiles)) {
4133 if (Args.hasArg(options::OPT_shared) || Args.hasArg(options::OPT_pie))
4138 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath(crtend)));
4139 CmdArgs.push_back(Args.MakeArgString(ToolChain.GetFilePath("crtn.o")));
4143 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
4145 if (Args.hasArg(options::OPT_use_gold_plugin)) {
4148 CmdArgs.push_back(Args.MakeArgString(Plugin));
4157 const ArgList &Args,
4161 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
4174 Args.MakeArgString(getToolChain().GetProgramPath("gas"));
4181 const ArgList &Args,
4193 if (!Args.hasArg(options::OPT_nostdlib) &&
4194 !Args.hasArg(options::OPT_nostartfiles))
4195 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
4198 Args.AddAllArgs(CmdArgs, options::OPT_L);
4199 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
4200 Args.AddAllArgs(CmdArgs, options::OPT_e);
4202 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
4204 if (!Args.hasArg(options::OPT_nostdlib) &&
4205 !Args.hasArg(options::OPT_nodefaultlibs)) {
4207 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
4211 if (Args.hasArg(options::OPT_pthread))
4221 if (!Args.hasArg(options::OPT_nostdlib) &&
4222 !Args.hasArg(options::OPT_nostartfiles)) {
4223 CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(
4227 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
4230 Args.MakeArgString(getToolChain().GetProgramPath("/usr/gnu/bin/gld"));
4241 const ArgList &Args,
4250 Args.AddAllArgValues(CmdArgs, options::OPT_Wa_COMMA,
4263 Args.MakeArgString(getToolChain().GetProgramPath("as"));
4270 const ArgList &Args,
4276 CmdArgs.push_back(Args.MakeArgString("--sysroot=" + D.SysRoot));
4278 if (Args.hasArg(options::OPT_static)) {
4281 if (Args.hasArg(options::OPT_shared))
4303 if (!Args.hasArg(options::OPT_nostdlib) &&
4304 !Args.hasArg(options::OPT_nostartfiles)) {
4305 if (!Args.hasArg(options::OPT_shared)) {
4307 Args.MakeArgString(getToolChain().GetFilePath("crt1.o")));
4309 Args.MakeArgString(getToolChain().GetFilePath("crti.o")));
4311 Args.MakeArgString(getToolChain().GetFilePath("crtbegin.o")));
4314 Args.MakeArgString(getToolChain().GetFilePath("crti.o")));
4316 Args.MakeArgString(getToolChain().GetFilePath("crtbeginS.o")));
4320 Args.AddAllArgs(CmdArgs, options::OPT_L);
4321 Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
4322 Args.AddAllArgs(CmdArgs, options::OPT_e);
4324 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
4326 if (!Args.hasArg(options::OPT_nostdlib) &&
4327 !Args.hasArg(options::OPT_nodefaultlibs)) {
4332 if (!Args.hasArg(options::OPT_static)) {
4347 getToolChain().AddCXXStdlibLibArgs(Args, CmdArgs);
4351 if (Args.hasArg(options::OPT_shared)) {
4358 if (Args.hasArg(options::OPT_pthread))
4361 if (!Args.hasArg(options::OPT_nolibc)) {
4365 if (Args.hasArg(options::OPT_shared)) {
4372 if (!Args.hasArg(options::OPT_nostdlib) &&
4373 !Args.hasArg(options::OPT_nostartfiles)) {
4374 if (!Args.hasArg(options::OPT_shared))
4375 CmdArgs.push_back(Args.MakeArgString(
4378 CmdArgs.push_back(Args.MakeArgString(
4380 CmdArgs.push_back(Args.MakeArgString(
4384 addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
4387 Args.MakeArgString(getToolChain().GetProgramPath("ld"));
4394 const ArgList &Args,
4399 CmdArgs.push_back(Args.MakeArgString(std::string("-out:") +
4405 if (!Args.hasArg(options::OPT_nostdlib) &&
4406 !Args.hasArg(options::OPT_nostartfiles)) {
4412 AddLinkerInputs(getToolChain(), Inputs, Args, CmdArgs);
4415 Args.MakeArgString(getToolChain().GetProgramPath("link.exe"));