Skip to content

Commit 633e740

Browse files
authored
[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.
1 parent 3bee9ba commit 633e740

File tree

4 files changed

+7
-0
lines changed

4 files changed

+7
-0
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9192,6 +9192,9 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
91929192
CmdArgs.push_back(
91939193
Args.MakeArgString("--device-linker=" + TC->getTripleString() +
91949194
"=-plugin-opt=-avail-extern-to-local"));
9195+
CmdArgs.push_back(Args.MakeArgString(
9196+
"--device-linker=" + TC->getTripleString() +
9197+
"=-plugin-opt=-avail-extern-gv-in-addrspace-to-local=3"));
91959198
if (Kind == Action::OFK_OpenMP) {
91969199
CmdArgs.push_back(
91979200
Args.MakeArgString("--device-linker=" + TC->getTripleString() +

clang/lib/Driver/ToolChains/HIPAMD.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
102102
if (IsThinLTO) {
103103
LldArgs.push_back(Args.MakeArgString("-plugin-opt=-force-import-all"));
104104
LldArgs.push_back(Args.MakeArgString("-plugin-opt=-avail-extern-to-local"));
105+
LldArgs.push_back(Args.MakeArgString(
106+
"-plugin-opt=-avail-extern-gv-in-addrspace-to-local=3"));
105107
}
106108

107109
for (const Arg *A : Args.filtered(options::OPT_mllvm)) {

clang/test/Driver/hip-thinlto.hip

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// CHECK: -plugin-opt=thinlto
44
// CHECK-SAME: -plugin-opt=-force-import-all
55
// CHECK-SAME: -plugin-opt=-avail-extern-to-local
6+
// CHECK-SAME: -plugin-opt=-avail-extern-gv-in-addrspace-to-local=3
67
int main(int, char *[]) {
78
return 0;
89
}

clang/test/Driver/openmp-offload-gpu.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,7 @@
388388
// THINLTO-GFX906: --device-compiler=amdgcn-amd-amdhsa=-flto=thin
389389
// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-force-import-all
390390
// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-avail-extern-to-local
391+
// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-avail-extern-gv-in-addrspace-to-local=3
391392
// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-amdgpu-internalize-symbols
392393
//
393394
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \

0 commit comments

Comments
 (0)