Author: agozillon
Date: 2024-09-27T18:17:53+02:00
New Revision: 3625f9f615c024b85f1daa967abae77998b939dc

URL: 
https://github.com/llvm/llvm-project/commit/3625f9f615c024b85f1daa967abae77998b939dc
DIFF: 
https://github.com/llvm/llvm-project/commit/3625f9f615c024b85f1daa967abae77998b939dc.diff

LOG: [Flang][Driver][Offload] Support -Xoffload-linker argument in Flang 
(#109907)

The -Xoffload-linker command allows forwarding of linker commands to the
clang-linker-wrapper used for linking offload libraries into the
resulting offload binaries amongst other tasks. This is a rather useful
command to have to support the offloading programming models flang-new
currently aims to support (OpenMP/OpenACC).

Currently this flag is utilised in the check-offload tests after a
recent addition and is used in conjunction with the Fortran OpenMP test
suite there, which fails at the moment due to flang-new not recognizing
the command, this fixes the issue. The alternative to this would of
course be to setup the test config to avoid using this flag with
Fortran, but I believe adding support of the flag to flang-new has more
merit as having the same compatability/communication capabilities as
Clang to the clang-linker-wrapper is important as it's a critical
component of the offload pipeline, and the command will likely see more
use in the near future.

Added: 
    flang/test/Driver/xoffload-linker.f90

Modified: 
    clang/include/clang/Driver/Options.td

Removed: 
    


################################################################################
diff  --git a/clang/include/clang/Driver/Options.td 
b/clang/include/clang/Driver/Options.td
index 932cf13edab53d..8b8824c04a3324 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -1055,6 +1055,7 @@ def Xlinker : Separate<["-"], "Xlinker">, 
Flags<[LinkerInput, RenderAsInput]>,
   HelpText<"Pass <arg> to the linker">, MetaVarName<"<arg>">,
   Group<Link_Group>;
 def Xoffload_linker : JoinedAndSeparate<["-"], "Xoffload-linker">,
+  Visibility<[ClangOption, CLOption, FlangOption, DXCOption]>,
   HelpText<"Pass <arg> to the offload linkers or the ones identified by 
-<triple>">,
   MetaVarName<"<triple> <arg>">, Group<Link_Group>;
 def Xpreprocessor : Separate<["-"], "Xpreprocessor">, 
Group<Preprocessor_Group>,

diff  --git a/flang/test/Driver/xoffload-linker.f90 
b/flang/test/Driver/xoffload-linker.f90
new file mode 100644
index 00000000000000..c8988de1fdec8e
--- /dev/null
+++ b/flang/test/Driver/xoffload-linker.f90
@@ -0,0 +1,10 @@
+! Test the -Xoffload-linker flag that forwards link commands to the 
clang-linker-wrapper used
+! to help link offloading device libraries
+
+! RUN: %flang -### %s -o %t 2>&1 -fopenmp --offload-arch=gfx90a 
--target=aarch64-unknown-linux-gnu -nogpulib -Xoffload-linker a | FileCheck %s 
--check-prefix=CHECK-XLINKER
+
+! CHECK-XLINKER: 
"{{[^"]*}}clang-linker-wrapper{{.*}}"{{.*}}"--device-linker=a"{{.*}}
+
+! RUN: %flang -### %s -o %t 2>&1 -fopenmp --offload-arch=gfx90a 
--target=aarch64-unknown-linux-gnu -nogpulib -Xoffload-linker a 
-Xoffload-linker-amdgcn-amd-amdhsa b | FileCheck %s 
--check-prefix=CHECK-XLINKER-AMDGCN
+
+! CHECK-XLINKER-AMDGCN: 
"{{[^"]*}}clang-linker-wrapper{{.*}}"{{.*}}"--device-linker=a"{{.*}}"--device-linker=amdgcn-amd-amdhsa=b"{{.*}}


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to