[clang] [Flang] Fix finding the Flang runtime for the GPU (PR #180971)
Joseph Huber via cfe-commits
cfe-commits at lists.llvm.org
Wed Feb 11 08:35:09 PST 2026
https://github.com/jhuber6 created https://github.com/llvm/llvm-project/pull/180971
Summary:
We were looking for `flang_rt.builtins` instead of `flang_rt.runtime`.
Also adds a test so we know that it actually works.
>From a1312b3a7587f1f285c139a50cc72a116d2230ea Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Wed, 11 Feb 2026 10:33:11 -0600
Subject: [PATCH] [Flang] Fix finding the Flang runtime for the GPU
Summary:
We were looking for `flang_rt.builtins` instead of `flang_rt.runtime`.
Also adds a test so we know that it actually works.
---
clang/lib/Driver/ToolChains/Clang.cpp | 11 ++++++++---
.../lib/amdgcn-amd-amdhsa/libflang_rt.runtime.a | 0
clang/test/Driver/offload.f90 | 5 +++++
3 files changed, 13 insertions(+), 3 deletions(-)
create mode 100644 clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/amdgcn-amd-amdhsa/libflang_rt.runtime.a
create mode 100644 clang/test/Driver/offload.f90
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 87d4d73748940..0819d2fef52e3 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -9403,13 +9403,18 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
"--device-linker=" + TC.getTripleString() + "=" + "-lm"));
}
auto HasCompilerRT = getToolChain().getVFS().exists(
- TC.getCompilerRT(Args, "builtins", ToolChain::FT_Static));
+ TC.getCompilerRT(Args, "builtins", ToolChain::FT_Static,
+ /*IsFortran=*/false));
if (HasCompilerRT)
CmdArgs.push_back(
Args.MakeArgString("--device-linker=" + TC.getTripleString() + "=" +
"-lclang_rt.builtins"));
- bool HasFlangRT = HasCompilerRT && C.getDriver().IsFlangMode();
- if (HasFlangRT)
+
+ bool HasFlangRT = getToolChain().getVFS().exists(
+ TC.getCompilerRT(Args, "runtime", ToolChain::FT_Static,
+ /*IsFortran=*/true));
+
+ if (HasFlangRT && C.getDriver().IsFlangMode())
CmdArgs.push_back(
Args.MakeArgString("--device-linker=" + TC.getTripleString() + "=" +
"-lflang_rt.runtime"));
diff --git a/clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/amdgcn-amd-amdhsa/libflang_rt.runtime.a b/clang/test/Driver/Inputs/resource_dir_with_per_target_subdir/lib/amdgcn-amd-amdhsa/libflang_rt.runtime.a
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/clang/test/Driver/offload.f90 b/clang/test/Driver/offload.f90
new file mode 100644
index 0000000000000..5f49f69f4d8f8
--- /dev/null
+++ b/clang/test/Driver/offload.f90
@@ -0,0 +1,5 @@
+// RUN: %clang -### --driver-mode=flang --target=x86_64-unknown-linux-gnu \
+// RUN: -resource-dir %S/Inputs/resource_dir_with_per_target_subdir \
+// RUN: --rocm-path=%S/Inputs/rocm -fopenmp --offload-arch=gfx908 \
+// RUN: %s 2>&1 | FileCheck %s --check-prefix=CHECK-FLANG-RT
+// CHECK-FLANG-RT: clang-linker-wrapper{{.*}}"--device-linker=amdgcn-amd-amdhsa=-lflang_rt.runtime"{{.*}}"-lflang_rt.runtime"
More information about the cfe-commits
mailing list