[clang] [HIP] Remove dots in HIP runtime path (PR #143792)
Siu Chi Chan via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 18 16:19:26 PDT 2025
https://github.com/scchan updated https://github.com/llvm/llvm-project/pull/143792
>From 9c60ee7b47c3b0f1bea492aafc0413bc73702f1e Mon Sep 17 00:00:00 2001
From: Siu Chi Chan <siuchi.chan at amd.com>
Date: Wed, 11 Jun 2025 17:18:42 -0400
Subject: [PATCH] [HIP] Remove dots in HIP runtime path Remove the dots in the
HIP path before passing to the rpath flag
---
clang/lib/Driver/ToolChains/Linux.cpp | 7 +++++--
clang/test/Driver/hip-runtime-libs-linux.hip | 6 ++++++
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
index 151b2bfced818..8ece0747ca19d 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -743,9 +743,12 @@ void Linux::AddHIPRuntimeLibArgs(const ArgList &Args,
Args.MakeArgString(StringRef("-L") + RocmInstallation->getLibPath()));
if (Args.hasFlag(options::OPT_frtlib_add_rpath,
- options::OPT_fno_rtlib_add_rpath, false))
+ options::OPT_fno_rtlib_add_rpath, false)) {
+ SmallString<0> p = RocmInstallation->getLibPath();
+ llvm::sys::path::remove_dots(p, true);
CmdArgs.append(
- {"-rpath", Args.MakeArgString(RocmInstallation->getLibPath())});
+ {"-rpath", Args.MakeArgString(p)});
+ }
CmdArgs.push_back("-lamdhip64");
}
diff --git a/clang/test/Driver/hip-runtime-libs-linux.hip b/clang/test/Driver/hip-runtime-libs-linux.hip
index a4cd2733114b6..eda87d0aa4b6c 100644
--- a/clang/test/Driver/hip-runtime-libs-linux.hip
+++ b/clang/test/Driver/hip-runtime-libs-linux.hip
@@ -20,6 +20,11 @@
// RUN: --rocm-path=%S/Inputs/rocm %t.o -frtlib-add-rpath 2>&1 \
// RUN: | FileCheck -check-prefixes=ROCM-RPATH %s
+// Test that a canonical HIP runtime path is passed to the -rpath flag
+// RUN: %clang -### --hip-link --target=x86_64-linux-gnu \
+// RUN: --rocm-path=%S/Inputs/rocm/./bin/../include/../ %t.o -frtlib-add-rpath 2>&1 \
+// RUN: | FileCheck -check-prefixes=ROCM-RPATH-CANONICAL %s
+
// Test detecting latest /opt/rocm-{release} directory.
// RUN: rm -rf %t && mkdir -p %t/opt
// RUN: cp -r %S/Inputs/rocm %t/opt/rocm-3.9.0-1234
@@ -55,6 +60,7 @@
// ROCM-PATH: "-L[[HIPRT:.*/Inputs/rocm/lib]]" "-lamdhip64"
// ROCM-RPATH: "-L[[HIPRT:.*/Inputs/rocm/lib]]" "-rpath" "[[HIPRT]]" "-lamdhip64"
+// ROCM-RPATH-CANONICAL: "-rpath" "{{.*/rocm/lib}}" "-lamdhip64"
// ROCM-REL: "-L[[HIPRT:.*/opt/rocm-3.10.0/lib]]" "-lamdhip64"
// NOHIPRT-NOT: "-L{{.*/Inputs/rocm/lib}}"
// NOHIPRT-NOT: "-rpath" "{{.*/Inputs/rocm/lib}}"
More information about the cfe-commits
mailing list