|
| 1 | +From d9f1b7d7571b252e0ba2359ae6cfa93a9903c0e7 Mon Sep 17 00:00:00 2001 |
| 2 | +From: =?UTF-8?q?Holger=20W=C3=BCnsche?= <holger.o.wuensche@t-online.de> |
| 3 | +Date: Tue, 21 Jan 2020 19:49:44 +0100 |
| 4 | +Subject: [PATCH] [HIP] use GetProgramPath for executable discovery |
| 5 | + |
| 6 | +This change replaces the manual building of executable paths |
| 7 | +using llvm::sys::path::append with GetProgramPath. |
| 8 | +This enables adding other paths in case executables reside |
| 9 | +in different directories and makes the code easier to read. |
| 10 | + |
| 11 | +Differential Revision: https://reviews.llvm.org/D72903 |
| 12 | +--- |
| 13 | + clang/lib/Driver/ToolChains/HIP.cpp | 23 ++++++++--------------- |
| 14 | + 1 file changed, 8 insertions(+), 15 deletions(-) |
| 15 | + |
| 16 | +diff --git a/lib/Driver/ToolChains/HIP.cpp b/lang/lib/Driver/ToolChains/HIP.cpp |
| 17 | +index 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 | +-- |
| 79 | +2.23.1 |
| 80 | + |
0 commit comments