[clang] [HIP] Make `--no-offloadlib` not link HIP's RT and alias `--no-hip-rt` (PR #177677)
Joseph Huber via cfe-commits
cfe-commits at lists.llvm.org
Thu Jan 29 06:48:34 PST 2026
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 <huberjn at outlook.com>
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"
More information about the cfe-commits
mailing list