[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(
|
||||
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() +
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 \
|
||||
|
||||
Reference in New Issue
Block a user