[flang-commits] [clang] [flang] [Flang][Driver][Offload] Support -Xoffload-linker argument in Flang (PR #109907)
via flang-commits
flang-commits at lists.llvm.org
Wed Sep 25 21:59:48 PDT 2024
https://github.com/agozillon updated https://github.com/llvm/llvm-project/pull/109907
>From 6e29de9836f49e49558e7810ec0a8084017c22b4 Mon Sep 17 00:00:00 2001
From: agozillon <Andrew.Gozillon at amd.com>
Date: Wed, 25 Sep 2024 00:18:26 -0500
Subject: [PATCH 1/3] [Flang][Driver][Offload] Support -Xoffload-linker
argument in Flang
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.
---
clang/include/clang/Driver/Options.td | 1 +
flang/test/Driver/xoffload-linker.f90 | 7 +++++++
2 files changed, 8 insertions(+)
create mode 100644 flang/test/Driver/xoffload-linker.f90
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index 23bd686a85f526..da24bc3541abda 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..886e649c1e8760
--- /dev/null
+++ b/flang/test/Driver/xoffload-linker.f90
@@ -0,0 +1,7 @@
+! Test the -Xoffload-linker flag that forwards link commands to the clang-linker-wrapper used
+! to help link offloading device libraries
+
+! RUN: %flang -### --target=x86_64-unknown-linux-gnu -fopenmp --offload-arch=gfx90a \
+! RUN: -Xoffload-linker a %s 2>&1 | FileCheck %s --check-prefix=CHECK-XLINKER
+
+! CHECK-XLINKER: -device-linker=a{{.*}}--
>From 7b18b3a2cd1ff2e330ca577c1ce46aa31ddbab3a Mon Sep 17 00:00:00 2001
From: agozillon <Andrew.Gozillon at amd.com>
Date: Wed, 25 Sep 2024 11:51:05 -0500
Subject: [PATCH 2/3] [Flang][Driver][Offload] Add new test case and attempt to
appease the CI gods
---
flang/test/Driver/xoffload-linker.f90 | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/flang/test/Driver/xoffload-linker.f90 b/flang/test/Driver/xoffload-linker.f90
index 886e649c1e8760..aa7d3e78c66ced 100644
--- a/flang/test/Driver/xoffload-linker.f90
+++ b/flang/test/Driver/xoffload-linker.f90
@@ -4,4 +4,10 @@
! RUN: %flang -### --target=x86_64-unknown-linux-gnu -fopenmp --offload-arch=gfx90a \
! RUN: -Xoffload-linker a %s 2>&1 | FileCheck %s --check-prefix=CHECK-XLINKER
-! CHECK-XLINKER: -device-linker=a{{.*}}--
+! CHECK-XLINKER: {{.*}}-device-linker=a{{.*}}
+
+! RUN: %flang -### --target=x86_64-unknown-linux-gnu -fopenmp --offload-arch=gfx90a \
+! RUN: -Xoffload-linker a -Xoffload-linker-amdgcn-amd-amdhsa b \
+! RUN: %s 2>&1 | FileCheck %s --check-prefix=CHECK-XLINKER-AMDGCN
+
+! CHECK-XLINKER-AMDGCN: {{.*}}-device-linker=a{{.*}}-device-linker=amdgcn-amd-amdhsa=b{{.*}}
>From 8b10990b5c5a5b301e8773ce031c63a454ae6fb5 Mon Sep 17 00:00:00 2001
From: agozillon <Andrew.Gozillon at amd.com>
Date: Wed, 25 Sep 2024 23:59:19 -0500
Subject: [PATCH 3/3] Attempt at fixing CI error #2
---
flang/test/Driver/xoffload-linker.f90 | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/flang/test/Driver/xoffload-linker.f90 b/flang/test/Driver/xoffload-linker.f90
index aa7d3e78c66ced..563914ae5e904d 100644
--- a/flang/test/Driver/xoffload-linker.f90
+++ b/flang/test/Driver/xoffload-linker.f90
@@ -1,13 +1,12 @@
! Test the -Xoffload-linker flag that forwards link commands to the clang-linker-wrapper used
! to help link offloading device libraries
-! RUN: %flang -### --target=x86_64-unknown-linux-gnu -fopenmp --offload-arch=gfx90a \
-! RUN: -Xoffload-linker a %s 2>&1 | FileCheck %s --check-prefix=CHECK-XLINKER
+! RUN: %flang -### --target=x86_64-unknown-linux-gnu -fopenmp --offload-arch=gfx90a -Xoffload-linker a %s 2>&1 | FileCheck %s --check-prefix=CHECK-XLINKER
-! CHECK-XLINKER: {{.*}}-device-linker=a{{.*}}
+! CHECK-XLINKER: {{.*}}--device-linker=a{{.*}}
-! RUN: %flang -### --target=x86_64-unknown-linux-gnu -fopenmp --offload-arch=gfx90a \
-! RUN: -Xoffload-linker a -Xoffload-linker-amdgcn-amd-amdhsa b \
-! RUN: %s 2>&1 | FileCheck %s --check-prefix=CHECK-XLINKER-AMDGCN
+! RUN: %flang -### --target=x86_64-unknown-linux-gnu -fopenmp --offload-arch=gfx90a -Xoffload-linker a -Xoffload-linker-amdgcn-amd-amdhsa b %s 2>&1 | FileCheck %s --check-prefix=CHECK-XLINKER-AMDGCN
-! CHECK-XLINKER-AMDGCN: {{.*}}-device-linker=a{{.*}}-device-linker=amdgcn-amd-amdhsa=b{{.*}}
+! CHECK-XLINKER-AMDGCN: {{.*}}"--device-linker=a"{{.*}}"--device-linker=amdgcn-amd-amdhsa=b"{{.*}}
+
+end program
More information about the flang-commits
mailing list