[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:
@@ -9192,6 +9192,9 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
|
|||||||
CmdArgs.push_back(
|
CmdArgs.push_back(
|
||||||
Args.MakeArgString("--device-linker=" + TC->getTripleString() +
|
Args.MakeArgString("--device-linker=" + TC->getTripleString() +
|
||||||
"=-plugin-opt=-avail-extern-to-local"));
|
"=-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) {
|
if (Kind == Action::OFK_OpenMP) {
|
||||||
CmdArgs.push_back(
|
CmdArgs.push_back(
|
||||||
Args.MakeArgString("--device-linker=" + TC->getTripleString() +
|
Args.MakeArgString("--device-linker=" + TC->getTripleString() +
|
||||||
|
|||||||
@@ -102,6 +102,8 @@ void AMDGCN::Linker::constructLldCommand(Compilation &C, const JobAction &JA,
|
|||||||
if (IsThinLTO) {
|
if (IsThinLTO) {
|
||||||
LldArgs.push_back(Args.MakeArgString("-plugin-opt=-force-import-all"));
|
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-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)) {
|
for (const Arg *A : Args.filtered(options::OPT_mllvm)) {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
// CHECK: -plugin-opt=thinlto
|
// CHECK: -plugin-opt=thinlto
|
||||||
// CHECK-SAME: -plugin-opt=-force-import-all
|
// CHECK-SAME: -plugin-opt=-force-import-all
|
||||||
// CHECK-SAME: -plugin-opt=-avail-extern-to-local
|
// CHECK-SAME: -plugin-opt=-avail-extern-to-local
|
||||||
|
// CHECK-SAME: -plugin-opt=-avail-extern-gv-in-addrspace-to-local=3
|
||||||
int main(int, char *[]) {
|
int main(int, char *[]) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -388,6 +388,7 @@
|
|||||||
// THINLTO-GFX906: --device-compiler=amdgcn-amd-amdhsa=-flto=thin
|
// 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=-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-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
|
// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-amdgpu-internalize-symbols
|
||||||
//
|
//
|
||||||
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
|
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
|
||||||
|
|||||||
Reference in New Issue
Block a user