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 <[email protected]>
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"

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to