summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIkhlas Ajbar <iajbar@codeaurora.org>2015-05-09 02:13:25 +0000
committerIkhlas Ajbar <iajbar@codeaurora.org>2015-05-09 02:13:25 +0000
commit71d19f3cd62a0b6c8c5bd4b8023e4533d44a05a2 (patch)
tree00e719f5fca509792666fa0480d424a612623f57
parentf34f410e0aa9bbcd6917ef12bcda3f4ea2ec38dd (diff)
downloadbcm5719-llvm-71d19f3cd62a0b6c8c5bd4b8023e4533d44a05a2.tar.gz
bcm5719-llvm-71d19f3cd62a0b6c8c5bd4b8023e4533d44a05a2.zip
Factor out Hexagon code to build args.
This patch factor out the code in hexagon::Link::ConstructJob to be reused in other functions. No functionality change intended. llvm-svn: 236926
-rw-r--r--clang/lib/Driver/Tools.cpp29
1 files changed, 21 insertions, 8 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 186f08e2116..0be1fa1e173 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -5444,17 +5444,16 @@ void hexagon::Link::RenderExtraToolArgs(const JobAction &JA,
// The types are (hopefully) good enough.
}
-void hexagon::Link::ConstructJob(Compilation &C, const JobAction &JA,
- const InputInfo &Output,
- const InputInfoList &Inputs,
- const ArgList &Args,
- const char *LinkingOutput) const {
+static void constructHexagonLinkArgs(Compilation &C, const JobAction &JA,
+ const toolchains::Hexagon_TC& ToolChain,
+ const InputInfo &Output,
+ const InputInfoList &Inputs,
+ const ArgList &Args,
+ ArgStringList &CmdArgs,
+ const char *LinkingOutput) {
- const toolchains::Hexagon_TC& ToolChain =
- static_cast<const toolchains::Hexagon_TC&>(getToolChain());
const Driver &D = ToolChain.getDriver();
- ArgStringList CmdArgs;
//----------------------------------------------------------------------------
//
@@ -5600,6 +5599,20 @@ void hexagon::Link::ConstructJob(Compilation &C, const JobAction &JA,
std::string finiObj = useShared ? "/finiS.o" : "/fini.o";
CmdArgs.push_back(Args.MakeArgString(StartFilesDir + finiObj));
}
+}
+
+void hexagon::Link::ConstructJob(Compilation &C, const JobAction &JA,
+ const InputInfo &Output,
+ const InputInfoList &Inputs,
+ const ArgList &Args,
+ const char *LinkingOutput) const {
+
+ const toolchains::Hexagon_TC& ToolChain =
+ static_cast<const toolchains::Hexagon_TC&>(getToolChain());
+
+ ArgStringList CmdArgs;
+ constructHexagonLinkArgs(C, JA, ToolChain, Output, Inputs, Args, CmdArgs,
+ LinkingOutput);
std::string Linker = ToolChain.GetProgramPath("hexagon-ld");
C.addCommand(llvm::make_unique<Command>(JA, *this, Args.MakeArgString(Linker),
OpenPOWER on IntegriCloud