Skip to content

Commit f4ff209

Browse files
authored
[Clang] Forward two linker options to lld when ThinLTO is enabled for AMDGPU (llvm#135690)
1 parent 5df9658 commit f4ff209

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9270,9 +9270,18 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
92709270
if (C.getDriver().getOffloadLTOMode() == LTOK_Full)
92719271
CmdArgs.push_back(Args.MakeArgString(
92729272
"--device-compiler=" + TC->getTripleString() + "=-flto=full"));
9273-
else if (C.getDriver().getOffloadLTOMode() == LTOK_Thin)
9273+
else if (C.getDriver().getOffloadLTOMode() == LTOK_Thin) {
92749274
CmdArgs.push_back(Args.MakeArgString(
92759275
"--device-compiler=" + TC->getTripleString() + "=-flto=thin"));
9276+
if (TC->getTriple().isAMDGPU()) {
9277+
CmdArgs.push_back(
9278+
Args.MakeArgString("--device-linker=" + TC->getTripleString() +
9279+
"=-plugin-opt=-force-import-all"));
9280+
CmdArgs.push_back(
9281+
Args.MakeArgString("--device-linker=" + TC->getTripleString() +
9282+
"=-plugin-opt=-avail-extern-to-local"));
9283+
}
9284+
}
92769285
}
92779286
}
92789287

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,3 +378,18 @@
378378
// RUN: --offload-arch=sm_52 -nogpulibc -nogpuinc %s 2>&1 \
379379
// RUN: | FileCheck --check-prefix=LIBC-GPU %s
380380
// LIBC-GPU-NOT: clang-linker-wrapper{{.*}}"--device-linker"
381+
382+
//
383+
// Check that ThinLTO works for OpenMP offloading.
384+
//
385+
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
386+
// RUN: --offload-arch=gfx906 -foffload-lto=thin -nogpulib -nogpuinc %s 2>&1 \
387+
// RUN: | FileCheck --check-prefix=THINLTO-GFX906 %s
388+
// THINLTO-GFX906: --device-compiler=amdgcn-amd-amdhsa=-flto=thin
389+
// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-force-import-all
390+
// THINLTO-GFX906-SAME: --device-linker=amdgcn-amd-amdhsa=-plugin-opt=-avail-extern-to-local
391+
//
392+
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fopenmp=libomp \
393+
// RUN: --offload-arch=sm_52 -foffload-lto=thin -nogpulib -nogpuinc %s 2>&1 \
394+
// RUN: | FileCheck --check-prefix=THINLTO-SM52 %s
395+
// THINLTO-SM52: --device-compiler=nvptx64-nvidia-cuda=-flto=thin

0 commit comments

Comments
 (0)