https://github.com/jhuber6 updated https://github.com/llvm/llvm-project/pull/177677
>From 0ab7851a9778f942500b4de15cf5daf8986d2061 Mon Sep 17 00:00:00 2001 From: Joseph Huber <[email protected]> Date: Thu, 29 Jan 2026 08:47:22 -0600 Subject: [PATCH] [HIP] Make `--no-offloadlib` not link HIP's RT Summary: Right now we have --no-hip-rt to suppress the implicit linking of the HIP runtime. However, we already have a flag for --no-offloadlib which seems to imply this. However, this one currently only applies to the device-side library. More targets will likely use this soon, so it would be nice to unify the behavior here. --- clang/lib/Driver/ToolChains/Linux.cpp | 4 +++- clang/lib/Driver/ToolChains/MSVC.cpp | 4 +++- clang/test/Driver/hip-runtime-libs-linux.hip | 7 +++++-- clang/test/Driver/hip-runtime-libs-msvc.hip | 8 ++++---- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp index cd2c4deb63d14..a9aadf3b2809b 100644 --- a/clang/lib/Driver/ToolChains/Linux.cpp +++ b/clang/lib/Driver/ToolChains/Linux.cpp @@ -847,7 +847,9 @@ void Linux::AddHIPIncludeArgs(const ArgList &DriverArgs, void Linux::addOffloadRTLibs(unsigned ActiveKinds, const ArgList &Args, ArgStringList &CmdArgs) const { - if (Args.hasArg(options::OPT_nostdlib) || + if (!Args.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib, + true) || + Args.hasArg(options::OPT_nostdlib) || Args.hasArg(options::OPT_no_hip_rt) || Args.hasArg(options::OPT_r)) return; diff --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp index 229be08ea7a5c..f57440855fce4 100644 --- a/clang/lib/Driver/ToolChains/MSVC.cpp +++ b/clang/lib/Driver/ToolChains/MSVC.cpp @@ -518,7 +518,9 @@ void MSVCToolChain::addSYCLIncludeArgs(const ArgList &DriverArgs, void MSVCToolChain::addOffloadRTLibs(unsigned ActiveKinds, const ArgList &Args, ArgStringList &CmdArgs) const { - if (Args.hasArg(options::OPT_no_hip_rt) || Args.hasArg(options::OPT_r)) + if (!Args.hasFlag(options::OPT_offloadlib, options::OPT_no_offloadlib, + true) || + Args.hasArg(options::OPT_no_hip_rt) || Args.hasArg(options::OPT_r)) return; if (ActiveKinds & Action::OFK_HIP) { diff --git a/clang/test/Driver/hip-runtime-libs-linux.hip b/clang/test/Driver/hip-runtime-libs-linux.hip index 3a35a8269fb12..298b43601d698 100644 --- a/clang/test/Driver/hip-runtime-libs-linux.hip +++ b/clang/test/Driver/hip-runtime-libs-linux.hip @@ -47,6 +47,9 @@ // RUN: %clang -### --hip-link -no-hip-rt --target=x86_64-linux-gnu \ // RUN: --rocm-path=%S/Inputs/rocm %t.o 2>&1 \ // RUN: | FileCheck -check-prefixes=NOHIPRT %s +// RUN: %clang -### --hip-link --no-offloadlib --target=x86_64-linux-gnu \ +// RUN: --rocm-path=%S/Inputs/rocm %t.o 2>&1 \ +// RUN: | FileCheck -check-prefixes=NOHIPRT %s // Test HIP runtime lib is not linked with -r. // RUN: %clang -### --hip-link -r --target=x86_64-linux-gnu \ @@ -54,8 +57,8 @@ // RUN: | FileCheck -check-prefixes=NOHIPRT %s // Test HIP runtime lib is linked without hip-link if there is HIP input file. -// RUN: %clang -### --target=x86_64-linux-gnu -nogpuinc -nogpulib \ -// RUN: --rocm-path=%S/Inputs/rocm %s 2>&1 \ +// RUN: %clang -### --target=x86_64-linux-gnu -nogpuinc \ +// RUN: --offload-arch=gfx908 --rocm-path=%S/Inputs/rocm %s 2>&1 \ // RUN: | FileCheck -check-prefixes=ROCM-PATH %s // ROCM-PATH: "{{.*/Inputs/rocm/lib/libamdhip64.so}}" "-L[[HIPRT:.*/Inputs/rocm/lib]]" diff --git a/clang/test/Driver/hip-runtime-libs-msvc.hip b/clang/test/Driver/hip-runtime-libs-msvc.hip index d282a2646342a..af10afebbe499 100644 --- a/clang/test/Driver/hip-runtime-libs-msvc.hip +++ b/clang/test/Driver/hip-runtime-libs-msvc.hip @@ -6,15 +6,15 @@ // RUN: | FileCheck %s // Test HIP runtime lib is linked without --hip-link when there is HIP input file. -// RUN: %clang -### --target=x86_64-pc-windows-msvc -nogpuinc -nogpulib \ -// RUN: --rocm-path=%S/Inputs/rocm %s 2>&1 \ +// RUN: %clang -### --target=x86_64-pc-windows-msvc -nogpuinc \ +// RUN: --offload-arch=gfx908 --rocm-path=%S/Inputs/rocm %s 2>&1 \ // RUN: | FileCheck %s // Test HIP runtime lib is linked even if -nostdlib is specified when the input // is a HIP file. This is important when composing with e.g. the UCRT or other // non glibc-like implementations of the C standard library. -// RUN: %clang -### --target=x86_64-pc-windows-msvc -nogpuinc -nogpulib \ -// RUN: -nostdlib --rocm-path=%S/Inputs/rocm %s 2>&1 \ +// RUN: %clang -### --target=x86_64-pc-windows-msvc -nogpuinc \ +// RUN: --offload-arch=gfx908 -nostdlib --rocm-path=%S/Inputs/rocm %s 2>&1 \ // RUN: | FileCheck %s // CHECK: "-libpath:{{.*Inputs.*rocm.*lib}}" "amdhip64.lib" _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
