[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:21:47 PDT 2025
https://github.com/scchan updated https://github.com/llvm/llvm-project/pull/143792
>From 62e627e4b8e68284668ad719d4c717fcd08fad45 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 | 8 +++++---
clang/test/Driver/hip-runtime-libs-linux.hip | 6 ++++++
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/clang/lib/Driver/ToolChains/Linux.cpp b/clang/lib/Driver/ToolChains/Linux.cpp
index 151b2bfced818..8ac8d4eb91812 100644
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -743,9 +743,11 @@ 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))
- CmdArgs.append(
- {"-rpath", Args.MakeArgString(RocmInstallation->getLibPath())});
+ options::OPT_fno_rtlib_add_rpath, false)) {
+ SmallString<0> p = RocmInstallation->getLibPath();
+ llvm::sys::path::remove_dots(p, true);
+ CmdArgs.append({"-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