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

Reply via email to