https://github.com/tru updated https://github.com/llvm/llvm-project/pull/100216
>From fef6b297b77e24239dccedf734b1fe85ff5eb9aa Mon Sep 17 00:00:00 2001 From: Joseph Huber <hube...@outlook.com> Date: Tue, 23 Jul 2024 14:41:57 -0500 Subject: [PATCH 1/5] [Clang] Correctly forward `--cuda-path` to the nvlink wrapper (#100170) Summary: This was not forwarded properly as it would try to pass it to `nvlink`. Fixes https://github.com/llvm/llvm-project/issues/100168 (cherry picked from commit 7e1fcf5dd657d465c3fc846f56c6f9d3a4560b43) --- clang/lib/Driver/ToolChains/Cuda.cpp | 4 ++++ clang/test/Driver/linker-wrapper-passes.c | 10 +++------- clang/test/Driver/nvlink-wrapper.c | 7 +++++++ clang/tools/clang-nvlink-wrapper/NVLinkOpts.td | 4 ++-- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp index 59453c484ae4f..61d12b10dfb62 100644 --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -609,6 +609,10 @@ void NVPTX::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back(Args.MakeArgString( "--pxtas-path=" + Args.getLastArgValue(options::OPT_ptxas_path_EQ))); + if (Args.hasArg(options::OPT_cuda_path_EQ)) + CmdArgs.push_back(Args.MakeArgString( + "--cuda-path=" + Args.getLastArgValue(options::OPT_cuda_path_EQ))); + // Add paths specified in LIBRARY_PATH environment variable as -L options. addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH"); diff --git a/clang/test/Driver/linker-wrapper-passes.c b/clang/test/Driver/linker-wrapper-passes.c index aadcf472e9b63..8c337ff906d17 100644 --- a/clang/test/Driver/linker-wrapper-passes.c +++ b/clang/test/Driver/linker-wrapper-passes.c @@ -1,9 +1,5 @@ // Check various clang-linker-wrapper pass options after -offload-opt. -// REQUIRES: llvm-plugins, llvm-examples -// REQUIRES: x86-registered-target -// REQUIRES: amdgpu-registered-target - // Setup. // RUN: mkdir -p %t // RUN: %clang -cc1 -emit-llvm-bc -o %t/host-x86_64-unknown-linux-gnu.bc \ @@ -23,14 +19,14 @@ // RUN: %t/host-x86_64-unknown-linux-gnu.s // Check plugin, -passes, and no remarks. -// RUN: clang-linker-wrapper -o a.out --embed-bitcode \ +// RUN: clang-linker-wrapper -o a.out --embed-bitcode --dry-run \ // RUN: --linker-path=/usr/bin/true %t/host-x86_64-unknown-linux-gnu.o \ // RUN: %offload-opt-loadbye --offload-opt=-wave-goodbye \ // RUN: --offload-opt=-passes="function(goodbye),module(inline)" 2>&1 | \ // RUN: FileCheck -match-full-lines -check-prefixes=OUT %s // Check plugin, -p, and remarks. -// RUN: clang-linker-wrapper -o a.out --embed-bitcode \ +// RUN: clang-linker-wrapper -o a.out --embed-bitcode --dry-run \ // RUN: --linker-path=/usr/bin/true %t/host-x86_64-unknown-linux-gnu.o \ // RUN: %offload-opt-loadbye --offload-opt=-wave-goodbye \ // RUN: --offload-opt=-p="function(goodbye),module(inline)" \ @@ -43,7 +39,7 @@ // RUN: -check-prefixes=YML %s // Check handling of bad plugin. -// RUN: not clang-linker-wrapper \ +// RUN: not clang-linker-wrapper --dry-run \ // RUN: --offload-opt=-load-pass-plugin=%t/nonexistent.so 2>&1 | \ // RUN: FileCheck -match-full-lines -check-prefixes=BAD-PLUGIN %s diff --git a/clang/test/Driver/nvlink-wrapper.c b/clang/test/Driver/nvlink-wrapper.c index fdda93f1f9cdc..318315ddaca34 100644 --- a/clang/test/Driver/nvlink-wrapper.c +++ b/clang/test/Driver/nvlink-wrapper.c @@ -63,3 +63,10 @@ int baz() { return y + x; } // RUN: -arch sm_52 -o a.out 2>&1 | FileCheck %s --check-prefix=LTO // LTO: ptxas{{.*}} -m64 -c [[PTX:.+]].s -O3 -arch sm_52 -o [[CUBIN:.+]].cubin // LTO: nvlink{{.*}} -arch sm_52 -o a.out [[CUBIN]].cubin {{.*}}-u-{{.*}}.cubin {{.*}}-y-{{.*}}.cubin + +// +// Check that we don't forward some arguments. +// +// RUN: clang-nvlink-wrapper --dry-run %t.o %t-u.o %t-y.a \ +// RUN: -arch sm_52 --cuda-path/opt/cuda -o a.out 2>&1 | FileCheck %s --check-prefix=PATH +// PATH-NOT: --cuda-path=/opt/cuda diff --git a/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td b/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td index e84b530f2787d..8c80a51b12a44 100644 --- a/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td +++ b/clang/tools/clang-nvlink-wrapper/NVLinkOpts.td @@ -12,9 +12,9 @@ def verbose : Flag<["-"], "v">, HelpText<"Print verbose information">; def version : Flag<["--"], "version">, HelpText<"Display the version number and exit">; -def cuda_path_EQ : Joined<["--"], "cuda-path=">, +def cuda_path_EQ : Joined<["--"], "cuda-path=">, Flags<[WrapperOnlyOption]>, MetaVarName<"<dir>">, HelpText<"Set the system CUDA path">; -def ptxas_path_EQ : Joined<["--"], "ptxas-path=">, +def ptxas_path_EQ : Joined<["--"], "ptxas-path=">, Flags<[WrapperOnlyOption]>, MetaVarName<"<dir>">, HelpText<"Set the 'ptxas' path">; def o : JoinedOrSeparate<["-"], "o">, MetaVarName<"<path>">, >From 160b1c126a564d258666465e8fe462ab81fef722 Mon Sep 17 00:00:00 2001 From: Joseph Huber <hube...@outlook.com> Date: Tue, 23 Jul 2024 16:30:41 -0500 Subject: [PATCH 2/5] Update clang/test/Driver/linker-wrapper-passes.c --- clang/test/Driver/linker-wrapper-passes.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/clang/test/Driver/linker-wrapper-passes.c b/clang/test/Driver/linker-wrapper-passes.c index 8c337ff906d17..a25ea6c78af66 100644 --- a/clang/test/Driver/linker-wrapper-passes.c +++ b/clang/test/Driver/linker-wrapper-passes.c @@ -1,5 +1,8 @@ // Check various clang-linker-wrapper pass options after -offload-opt. +// REQUIRES: llvm-plugins, llvm-examples +// REQUIRES: x86-registered-target +// REQUIRES: amdgpu-registered-target // Setup. // RUN: mkdir -p %t // RUN: %clang -cc1 -emit-llvm-bc -o %t/host-x86_64-unknown-linux-gnu.bc \ >From 7888929541d4879cda00f91ee8c1b0ea0db1282b Mon Sep 17 00:00:00 2001 From: Joseph Huber <hube...@outlook.com> Date: Tue, 23 Jul 2024 16:31:26 -0500 Subject: [PATCH 3/5] Update clang/test/Driver/linker-wrapper-passes.c --- clang/test/Driver/linker-wrapper-passes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/test/Driver/linker-wrapper-passes.c b/clang/test/Driver/linker-wrapper-passes.c index a25ea6c78af66..39d1c0a12bf43 100644 --- a/clang/test/Driver/linker-wrapper-passes.c +++ b/clang/test/Driver/linker-wrapper-passes.c @@ -22,7 +22,7 @@ // RUN: %t/host-x86_64-unknown-linux-gnu.s // Check plugin, -passes, and no remarks. -// RUN: clang-linker-wrapper -o a.out --embed-bitcode --dry-run \ +// RUN: clang-linker-wrapper -o a.out --embed-bitcode \ // RUN: --linker-path=/usr/bin/true %t/host-x86_64-unknown-linux-gnu.o \ // RUN: %offload-opt-loadbye --offload-opt=-wave-goodbye \ // RUN: --offload-opt=-passes="function(goodbye),module(inline)" 2>&1 | \ >From 104539e052efb966e0125571878d123cb657b753 Mon Sep 17 00:00:00 2001 From: Joseph Huber <hube...@outlook.com> Date: Tue, 23 Jul 2024 16:31:31 -0500 Subject: [PATCH 4/5] Update clang/test/Driver/linker-wrapper-passes.c --- clang/test/Driver/linker-wrapper-passes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/test/Driver/linker-wrapper-passes.c b/clang/test/Driver/linker-wrapper-passes.c index 39d1c0a12bf43..5a73a4427fa94 100644 --- a/clang/test/Driver/linker-wrapper-passes.c +++ b/clang/test/Driver/linker-wrapper-passes.c @@ -29,7 +29,7 @@ // RUN: FileCheck -match-full-lines -check-prefixes=OUT %s // Check plugin, -p, and remarks. -// RUN: clang-linker-wrapper -o a.out --embed-bitcode --dry-run \ +// RUN: clang-linker-wrapper -o a.out --embed-bitcode \ // RUN: --linker-path=/usr/bin/true %t/host-x86_64-unknown-linux-gnu.o \ // RUN: %offload-opt-loadbye --offload-opt=-wave-goodbye \ // RUN: --offload-opt=-p="function(goodbye),module(inline)" \ >From 34b184f18f31e56b70facec59b44a3f16973ebfe Mon Sep 17 00:00:00 2001 From: Joseph Huber <hube...@outlook.com> Date: Tue, 23 Jul 2024 16:31:36 -0500 Subject: [PATCH 5/5] Update clang/test/Driver/linker-wrapper-passes.c --- clang/test/Driver/linker-wrapper-passes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/test/Driver/linker-wrapper-passes.c b/clang/test/Driver/linker-wrapper-passes.c index 5a73a4427fa94..b257c942afa07 100644 --- a/clang/test/Driver/linker-wrapper-passes.c +++ b/clang/test/Driver/linker-wrapper-passes.c @@ -42,7 +42,7 @@ // RUN: -check-prefixes=YML %s // Check handling of bad plugin. -// RUN: not clang-linker-wrapper --dry-run \ +// RUN: not clang-linker-wrapper \ // RUN: --offload-opt=-load-pass-plugin=%t/nonexistent.so 2>&1 | \ // RUN: FileCheck -match-full-lines -check-prefixes=BAD-PLUGIN %s _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits