[clang] f4ff209 - [Clang] Forward two linker options to `lld` when ThinLTO is enabled for AMDGPU (#135690)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Apr 14 17:57:24 PDT 2025
Author: Shilei Tian
Date: 2025-04-14T20:57:20-04:00
New Revision: f4ff209e4384d8073f36fb7da9916b33f1140edf
URL: https://github.com/llvm/llvm-project/commit/f4ff209e4384d8073f36fb7da9916b33f1140edf
DIFF: https://github.com/llvm/llvm-project/commit/f4ff209e4384d8073f36fb7da9916b33f1140edf.diff
LOG: [Clang] Forward two linker options to `lld` when ThinLTO is enabled for AMDGPU (#135690)
Added:
Modified:
clang/lib/Driver/ToolChains/Clang.cpp
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 a330972045550..65910e7fdaaa6 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -9270,9 +9270,18 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
if (C.getDriver().getOffloadLTOMode() == LTOK_Full)
CmdArgs.push_back(Args.MakeArgString(
"--device-compiler=" + TC->getTripleString() + "=-flto=full"));
- else if (C.getDriver().getOffloadLTOMode() == LTOK_Thin)
+ else if (C.getDriver().getOffloadLTOMode() == LTOK_Thin) {
CmdArgs.push_back(Args.MakeArgString(
"--device-compiler=" + TC->getTripleString() + "=-flto=thin"));
+ if (TC->getTriple().isAMDGPU()) {
+ CmdArgs.push_back(
+ Args.MakeArgString("--device-linker=" + TC->getTripleString() +
+ "=-plugin-opt=-force-import-all"));
+ CmdArgs.push_back(
+ Args.MakeArgString("--device-linker=" + TC->getTripleString() +
+ "=-plugin-opt=-avail-extern-to-local"));
+ }
+ }
}
}
diff --git a/clang/test/Driver/openmp-offload-gpu.c b/clang/test/Driver/openmp-offload-gpu.c
index 1f7e2996068c4..8a7edaef7cc45 100644
--- a/clang/test/Driver/openmp-offload-gpu.c
+++ b/clang/test/Driver/openmp-offload-gpu.c
@@ -378,3 +378,18 @@
// RUN: --offload-arch=sm_52 -nogpulibc -nogpuinc %s 2>&1 \
// RUN: | FileCheck --check-prefix=LIBC-GPU %s
// LIBC-GPU-NOT: clang-linker-wrapper{{.*}}"--device-linker"
+
+//
+// Check that ThinLTO works for OpenMP offloading.
+//
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
+// RUN: --offload-arch=gfx906 -foffload-lto=thin -nogpulib -nogpuinc %s 2>&1 \
+// RUN: | FileCheck --check-prefix=THINLTO-GFX906 %s
+// 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
+//
+// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
+// RUN: --offload-arch=sm_52 -foffload-lto=thin -nogpulib -nogpuinc %s 2>&1 \
+// RUN: | FileCheck --check-prefix=THINLTO-SM52 %s
+// THINLTO-SM52: --device-compiler=nvptx64-nvidia-cuda=-flto=thin
More information about the cfe-commits
mailing list