[clang] 624d322 - [Clang] Fix 'clang-nvlink-wrapper' not working w/o CUDA
Joseph Huber via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 22 16:58:07 PDT 2024
Author: Joseph Huber
Date: 2024-07-22T18:57:54-05:00
New Revision: 624d3221d1159bff98964d77c1b76e04a367d9d4
URL: https://github.com/llvm/llvm-project/commit/624d3221d1159bff98964d77c1b76e04a367d9d4
DIFF: https://github.com/llvm/llvm-project/commit/624d3221d1159bff98964d77c1b76e04a367d9d4.diff
LOG: [Clang] Fix 'clang-nvlink-wrapper' not working w/o CUDA
Summary:
This would try to find `nvlink` and then fail even in `dry-run` mode.
We now just let it continue and pretend like we found it. Also add it to
the depends.
Added:
Modified:
clang/test/CMakeLists.txt
clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
Removed:
################################################################################
diff --git a/clang/test/CMakeLists.txt b/clang/test/CMakeLists.txt
index 8303269a9ad07..299a35723b59d 100644
--- a/clang/test/CMakeLists.txt
+++ b/clang/test/CMakeLists.txt
@@ -78,6 +78,7 @@ list(APPEND CLANG_TEST_DEPS
clang-installapi
clang-scan-deps
clang-linker-wrapper
+ clang-nvlink-wrapper
clang-offload-bundler
clang-offload-packager
diagtool
diff --git a/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp b/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
index c56486b54a339..c71873160a5a0 100644
--- a/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
+++ b/clang/tools/clang-nvlink-wrapper/ClangNVLinkWrapper.cpp
@@ -190,7 +190,10 @@ Expected<StringRef> createTempFile(const ArgList &Args, const Twine &Prefix,
return TempFiles.back();
}
-Expected<std::string> findProgram(StringRef Name, ArrayRef<StringRef> Paths) {
+Expected<std::string> findProgram(const ArgList &Args, StringRef Name,
+ ArrayRef<StringRef> Paths) {
+ if (Args.hasArg(OPT_dry_run))
+ return Name.str();
ErrorOr<std::string> Path = sys::findProgramByName(Name, Paths);
if (!Path)
Path = sys::findProgramByName(Name);
@@ -294,10 +297,9 @@ struct Symbol {
Expected<StringRef> runPTXAs(StringRef File, const ArgList &Args) {
std::string CudaPath = Args.getLastArgValue(OPT_cuda_path_EQ).str();
+ std::string GivenPath = Args.getLastArgValue(OPT_ptxas_path_EQ).str();
Expected<std::string> PTXAsPath =
- Args.getLastArgValue(OPT_ptxas_path_EQ).str();
- if (PTXAsPath->empty())
- PTXAsPath = findProgram("ptxas", {CudaPath + "/bin"});
+ findProgram(Args, "ptxas", {CudaPath + "/bin", GivenPath});
if (!PTXAsPath)
return PTXAsPath.takeError();
@@ -686,7 +688,8 @@ Error runNVLink(ArrayRef<StringRef> Files, const ArgList &Args) {
return Error::success();
std::string CudaPath = Args.getLastArgValue(OPT_cuda_path_EQ).str();
- Expected<std::string> NVLinkPath = findProgram("nvlink", {CudaPath + "/bin"});
+ Expected<std::string> NVLinkPath =
+ findProgram(Args, "nvlink", {CudaPath + "/bin"});
if (!NVLinkPath)
return NVLinkPath.takeError();
More information about the cfe-commits
mailing list