francii created this revision. Herald added a project: All. francii requested review of this revision. Herald added subscribers: cfe-commits, MaskRay. Herald added a project: clang.
when certain flags are specified, the Crt0 object files are not linked. However, the logic for determining which files will always run. This patch moves that logic so that the basename is only determined if it is needed. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D146443 Files: clang/lib/Driver/ToolChains/AIX.cpp Index: clang/lib/Driver/ToolChains/AIX.cpp =================================================================== --- clang/lib/Driver/ToolChains/AIX.cpp +++ clang/lib/Driver/ToolChains/AIX.cpp @@ -163,19 +163,19 @@ CmdArgs.push_back("-bpD:0x110000000"); } - auto getCrt0Basename = [&Args, IsArch32Bit] { - if (Arg *A = Args.getLastArgNoClaim(options::OPT_p, options::OPT_pg)) { - // Enable gprofiling when "-pg" is specified. - if (A->getOption().matches(options::OPT_pg)) - return IsArch32Bit ? "gcrt0.o" : "gcrt0_64.o"; - // Enable profiling when "-p" is specified. - return IsArch32Bit ? "mcrt0.o" : "mcrt0_64.o"; - } - return IsArch32Bit ? "crt0.o" : "crt0_64.o"; - }; - if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles, options::OPT_shared, options::OPT_r)) { + auto getCrt0Basename = [&Args, IsArch32Bit] { + if (Arg *A = Args.getLastArgNoClaim(options::OPT_p, options::OPT_pg)) { + // Enable gprofiling when "-pg" is specified. + if (A->getOption().matches(options::OPT_pg)) + return IsArch32Bit ? "gcrt0.o" : "gcrt0_64.o"; + // Enable profiling when "-p" is specified. + return IsArch32Bit ? "mcrt0.o" : "mcrt0_64.o"; + } + return IsArch32Bit ? "crt0.o" : "crt0_64.o"; + }; + CmdArgs.push_back( Args.MakeArgString(ToolChain.GetFilePath(getCrt0Basename())));
Index: clang/lib/Driver/ToolChains/AIX.cpp =================================================================== --- clang/lib/Driver/ToolChains/AIX.cpp +++ clang/lib/Driver/ToolChains/AIX.cpp @@ -163,19 +163,19 @@ CmdArgs.push_back("-bpD:0x110000000"); } - auto getCrt0Basename = [&Args, IsArch32Bit] { - if (Arg *A = Args.getLastArgNoClaim(options::OPT_p, options::OPT_pg)) { - // Enable gprofiling when "-pg" is specified. - if (A->getOption().matches(options::OPT_pg)) - return IsArch32Bit ? "gcrt0.o" : "gcrt0_64.o"; - // Enable profiling when "-p" is specified. - return IsArch32Bit ? "mcrt0.o" : "mcrt0_64.o"; - } - return IsArch32Bit ? "crt0.o" : "crt0_64.o"; - }; - if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles, options::OPT_shared, options::OPT_r)) { + auto getCrt0Basename = [&Args, IsArch32Bit] { + if (Arg *A = Args.getLastArgNoClaim(options::OPT_p, options::OPT_pg)) { + // Enable gprofiling when "-pg" is specified. + if (A->getOption().matches(options::OPT_pg)) + return IsArch32Bit ? "gcrt0.o" : "gcrt0_64.o"; + // Enable profiling when "-p" is specified. + return IsArch32Bit ? "mcrt0.o" : "mcrt0_64.o"; + } + return IsArch32Bit ? "crt0.o" : "crt0_64.o"; + }; + CmdArgs.push_back( Args.MakeArgString(ToolChain.GetFilePath(getCrt0Basename())));
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits