nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1From d9f1b7d7571b252e0ba2359ae6cfa93a9903c0e7 Mon Sep 17 00:00:00 2001
2From: =?UTF-8?q?Holger=20W=C3=BCnsche?= <holger.o.wuensche@t-online.de>
3Date: Tue, 21 Jan 2020 19:49:44 +0100
4Subject: [PATCH] [HIP] use GetProgramPath for executable discovery
5
6This change replaces the manual building of executable paths
7using llvm::sys::path::append with GetProgramPath.
8This enables adding other paths in case executables reside
9in different directories and makes the code easier to read.
10
11Differential Revision: https://reviews.llvm.org/D72903
12---
13 clang/lib/Driver/ToolChains/HIP.cpp | 23 ++++++++---------------
14 1 file changed, 8 insertions(+), 15 deletions(-)
15
16diff --git a/lib/Driver/ToolChains/HIP.cpp b/lang/lib/Driver/ToolChains/HIP.cpp
17index 868765cf88e..31f2d68ec6c 100644
18--- a/lib/Driver/ToolChains/HIP.cpp
19+++ b/lib/Driver/ToolChains/HIP.cpp
20@@ -104,9 +104,8 @@ const char *AMDGCN::Linker::constructLLVMLinkCommand(
21 const char *OutputFileName =
22 C.addTempFile(C.getArgs().MakeArgString(TmpName));
23 CmdArgs.push_back(OutputFileName);
24- SmallString<128> ExecPath(C.getDriver().Dir);
25- llvm::sys::path::append(ExecPath, "llvm-link");
26- const char *Exec = Args.MakeArgString(ExecPath);
27+ const char *Exec =
28+ Args.MakeArgString(getToolChain().GetProgramPath("llvm-link"));
29 C.addCommand(llvm::make_unique<Command>(JA, *this, Exec, CmdArgs, Inputs));
30 return OutputFileName;
31 }
32@@ -147,9 +146,8 @@ const char *AMDGCN::Linker::constructOptCommand(
33 const char *OutputFileName =
34 C.addTempFile(C.getArgs().MakeArgString(TmpFileName));
35 OptArgs.push_back(OutputFileName);
36- SmallString<128> OptPath(C.getDriver().Dir);
37- llvm::sys::path::append(OptPath, "opt");
38- const char *OptExec = Args.MakeArgString(OptPath);
39+ const char *OptExec =
40+ Args.MakeArgString(getToolChain().GetProgramPath("opt"));
41 C.addCommand(llvm::make_unique<Command>(JA, *this, OptExec, OptArgs, Inputs));
42 return OutputFileName;
43 }
44@@ -167,9 +165,7 @@ const char *AMDGCN::Linker::constructLlcCommand(
45 const char *LlcOutputFile =
46 C.addTempFile(C.getArgs().MakeArgString(LlcOutputFileName));
47 LlcArgs.push_back(LlcOutputFile);
48- SmallString<128> LlcPath(C.getDriver().Dir);
49- llvm::sys::path::append(LlcPath, "llc");
50- const char *Llc = Args.MakeArgString(LlcPath);
51+ const char *Llc = Args.MakeArgString(getToolChain().GetProgramPath("llc"));
52 C.addCommand(llvm::make_unique<Command>(JA, *this, Llc, LlcArgs, Inputs));
53 return LlcOutputFile;
54 }
55@@ -184,9 +180,7 @@ void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
56 ArgStringList LldArgs{"-flavor", "gnu", "--no-undefined",
57 "-shared", "-o", Output.getFilename(),
58 InputFileName};
59- SmallString<128> LldPath(C.getDriver().Dir);
60- llvm::sys::path::append(LldPath, "lld");
61- const char *Lld = Args.MakeArgString(LldPath);
62+ const char *Lld = Args.MakeArgString(getToolChain().GetProgramPath("lld"));
63 C.addCommand(llvm::make_unique<Command>(JA, *this, Lld, LldArgs, Inputs));
64 }
65
66@@ -218,9 +212,8 @@ void AMDGCN::constructHIPFatbinCommand(Compilation &C, const JobAction &JA,
67 Args.MakeArgString(std::string("-outputs=").append(OutputFileName));
68 BundlerArgs.push_back(BundlerOutputArg);
69
70- SmallString<128> BundlerPath(C.getDriver().Dir);
71- llvm::sys::path::append(BundlerPath, "clang-offload-bundler");
72- const char *Bundler = Args.MakeArgString(BundlerPath);
73+ const char *Bundler = Args.MakeArgString(
74+ T.getToolChain().GetProgramPath("clang-offload-bundler"));
75 C.addCommand(llvm::make_unique<Command>(JA, T, Bundler, BundlerArgs, Inputs));
76 }
77
78--
792.23.1
80