[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