[clang] [Clang][AMDGPU][Driver] Add `avail-extern-gv-in-addrspace-to-local` option when ThinTLO is enabled (PR #144914)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Jun 19 08:22:47 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Shilei Tian (shiltian)
<details>
<summary>Changes</summary>
On AMDGPU, we need an extra argument `-avail-extern-gv-in-addrspace-to-local=3`
to privatize LDS global variables when ThinLTO is enabled.
---
Full diff: https://github.com/llvm/llvm-project/pull/144914.diff
4 Files Affected:
- (modified) clang/lib/Driver/ToolChains/Clang.cpp (+3)
- (modified) clang/lib/Driver/ToolChains/HIPAMD.cpp (+2)
- (modified) clang/test/Driver/hip-thinlto.hip (+1)
- (modified) clang/test/Driver/openmp-offload-gpu.c (+1)
``````````diff
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index a78a1c8978183..3314cdf96a081 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -9186,6 +9186,9 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
CmdArgs.push_back(
Args.MakeArgString("--device-linker=" + TC->getTripleString() +
"=-plugin-opt=-avail-extern-to-local"));
+ CmdArgs.push_back(Args.MakeArgString(
+ "--device-linker=" + TC->getTripleString() +
+ "=-plugin-opt=-avail-extern-gv-in-addrspace-to-local=3"));
if (Kind == Action::OFK_OpenMP) {
CmdArgs.push_back(
Args.MakeArgString("--device-linker=" + TC->getTripleString() +
diff --git a/clang/lib/Driver/ToolChains/HIPAMD.cpp b/clang/lib/Driver/ToolChains/HIPAMD.cpp
index 74ac8306e7cc1..b8f3a70ee827e 100644
--- a/clang/lib/Driver/ToolChains/HIPAMD.cpp
+++ b/clang/lib/Driver/ToolChains/HIPAMD.cpp
@@ -102,6 +102,8 @@ void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
if (IsThinLTO) {
LldArgs.push_back(Args.MakeArgString("-plugin-opt=-force-import-all"));
LldArgs.push_back(Args.MakeArgString("-plugin-opt=-avail-extern-to-local"));
+ LldArgs.push_back(Args.MakeArgString(
+ "-plugin-opt=-avail-extern-gv-in-addrspace-to-local=3"));
}
for (const Arg *A : Args.filtered(options::OPT_mllvm)) {
diff --git a/clang/test/Driver/hip-thinlto.hip b/clang/test/Driver/hip-thinlto.hip
index 4227cd3f2e9f9..bcb7d4e6cb52e 100644
--- a/clang/test/Driver/hip-thinlto.hip
+++ b/clang/test/Driver/hip-thinlto.hip
@@ -3,6 +3,7 @@
// CHECK: -plugin-opt=thinlto
// CHECK-SAME: -plugin-opt=-force-import-all
// CHECK-SAME: -plugin-opt=-avail-extern-to-local
+// CHECK-SAME: -plugin-opt=-avail-extern-gv-in-addrspace-to-local=3
int main(int, char *[]) {
return 0;
}
diff --git a/clang/test/Driver/openmp-offload-gpu.c b/clang/test/Driver/openmp-offload-gpu.c
index f67c2173cb144..2af3e2da3b21c 100644
--- a/clang/test/Driver/openmp-offload-gpu.c
+++ b/clang/test/Driver/openmp-offload-gpu.c
@@ -388,6 +388,7 @@
// THINLTO-GFX906: --device-compiler=amdgcn-amd-amdhsa=-flto=thin
// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-force-import-all
// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-avail-extern-to-local
+// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-avail-extern-gv-in-addrspace-to-local=3
// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-amdgpu-internalize-symbols
//
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
``````````
</details>
https://github.com/llvm/llvm-project/pull/144914
More information about the cfe-commits
mailing list