diff options
author | shawbyoung <shawbyoung@gmail.com> | 2024-06-11 11:31:37 -0700 |
---|---|---|
committer | shawbyoung <shawbyoung@gmail.com> | 2024-06-11 11:31:37 -0700 |
commit | 5a183532e960444088aa4d76d4686d7c93ba79b9 (patch) | |
tree | 1114d269ee12850977221ea90c600bbae85507c8 /clang/lib/Driver/ToolChains/Gnu.cpp | |
parent | 338cbfef03e0ab58d7b52f3301928c58b194a1b4 (diff) | |
download | llvm-users/shawbyoung/spr/main.updated-commandlineargumentreferencemd.zip llvm-users/shawbyoung/spr/main.updated-commandlineargumentreferencemd.tar.gz llvm-users/shawbyoung/spr/main.updated-commandlineargumentreferencemd.tar.bz2 |
[𝘀𝗽𝗿] changes to main this commit is based onusers/shawbyoung/spr/main.updated-commandlineargumentreferencemd
Created using spr 1.3.4
[skip ci]
Diffstat (limited to 'clang/lib/Driver/ToolChains/Gnu.cpp')
-rw-r--r-- | clang/lib/Driver/ToolChains/Gnu.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index b141e5f..f7611af 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -672,12 +672,41 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, } } + // Facebook T92898286 + if (Args.hasArg(options::OPT_post_link_optimize)) + CmdArgs.push_back("-q"); + // End Facebook T92898286 + Args.AddAllArgs(CmdArgs, options::OPT_T); const char *Exec = Args.MakeArgString(ToolChain.GetLinkerPath()); C.addCommand(std::make_unique<Command>(JA, *this, ResponseFileSupport::AtFileCurCP(), Exec, CmdArgs, Inputs, Output)); + // Facebook T92898286 + if (!Args.hasArg(options::OPT_post_link_optimize) || !Output.isFilename()) + return; + + const char *MvExec = Args.MakeArgString(ToolChain.GetProgramPath("mv")); + ArgStringList MoveCmdArgs; + MoveCmdArgs.push_back(Output.getFilename()); + const char *PreBoltBin = + Args.MakeArgString(Twine(Output.getFilename()) + ".pre-bolt"); + MoveCmdArgs.push_back(PreBoltBin); + C.addCommand(std::make_unique<Command>(JA, *this, ResponseFileSupport::None(), + MvExec, MoveCmdArgs, std::nullopt)); + + ArgStringList BoltCmdArgs; + const char *BoltExec = + Args.MakeArgString(ToolChain.GetProgramPath("llvm-bolt")); + BoltCmdArgs.push_back(PreBoltBin); + BoltCmdArgs.push_back("-reorder-blocks=reverse"); + BoltCmdArgs.push_back("-update-debug-sections"); + BoltCmdArgs.push_back("-o"); + BoltCmdArgs.push_back(Output.getFilename()); + C.addCommand(std::make_unique<Command>(JA, *this, ResponseFileSupport::None(), + BoltExec, BoltCmdArgs, std::nullopt)); + // End Facebook T92898286 } void tools::gnutools::Assembler::ConstructJob(Compilation &C, |