Author: Shilei Tian Date: 2025-06-19T14:32:20-04:00 New Revision: 633e740e3453bab06bf535830174c759100257f9
URL: https://github.com/llvm/llvm-project/commit/633e740e3453bab06bf535830174c759100257f9 DIFF: https://github.com/llvm/llvm-project/commit/633e740e3453bab06bf535830174c759100257f9.diff LOG: [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. Added: Modified: clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/HIPAMD.cpp clang/test/Driver/hip-thinlto.hip clang/test/Driver/openmp-offload-gpu.c Removed: ################################################################################ diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 5a3c09e3a343a..e910a2bedeeb1 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -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() + 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 \ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits