llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang

@llvm/pr-subscribers-clang-driver

Author: Shilei Tian (shiltian)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/135690.diff


2 Files Affected:

- (modified) clang/lib/Driver/ToolChains/Clang.cpp (+10-1) 
- (modified) clang/test/Driver/openmp-offload-gpu.c (+15) 


``````````diff
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

``````````

</details>


https://github.com/llvm/llvm-project/pull/135690
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to