[Clang][AMDGPU][Driver] Add avail-extern-gv-in-addrspace-to-local option when ThinTLO is enabled (#144914)

On AMDGPU, we need an extra argument
`-avail-extern-gv-in-addrspace-to-local=3`
to privatize LDS global variables when ThinLTO is enabled.
This commit is contained in:
Shilei Tian
2025-06-19 14:32:20 -04:00
committed by GitHub
parent 3bee9ba015
commit 633e740e34
4 changed files with 7 additions and 0 deletions

View File

@@ -9192,6 +9192,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() +

View File

@@ -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)) {

View File

@@ -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;
}

View File

@@ -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 \