[clang] [AMDGPU][SPIR-V] Fix treating SPIR-V input as LLVM-IR (PR #202986)

Joseph Huber via cfe-commits cfe-commits at lists.llvm.org
Wed Jun 10 07:08:13 PDT 2026


https://github.com/jhuber6 created https://github.com/llvm/llvm-project/pull/202986

Summary:
This hack is intended for non-RDC AMDGCN.


>From 6519786be4ef7ad70d2909aa2cfd8db54680554a Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Wed, 10 Jun 2026 08:58:39 -0500
Subject: [PATCH] [AMDGPU][SPIR-V] Fix treating SPIR-V input as LLVM-IR

Summary:
This hack is intended for non-RDC AMDGCN.
---
 clang/lib/Driver/ToolChains/Clang.cpp      | 2 +-
 clang/test/Driver/hip-toolchain-no-rdc.hip | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 5b124ed9f9832..c3ccee7f19653 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -9706,7 +9706,7 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
             options::OPT_fprofile_instr_generate_EQ);
         if (!Args.hasArg(options::OPT_foffload_lto_EQ,
                          options::OPT_fno_offload_lto) &&
-            !UsesProfileGenerate)
+            !UsesProfileGenerate && !TC->getTriple().isSPIRV())
           CmdArgs.push_back("--no-lto");
       }
     }
diff --git a/clang/test/Driver/hip-toolchain-no-rdc.hip b/clang/test/Driver/hip-toolchain-no-rdc.hip
index 591342df3839c..dbea253dc75d1 100644
--- a/clang/test/Driver/hip-toolchain-no-rdc.hip
+++ b/clang/test/Driver/hip-toolchain-no-rdc.hip
@@ -47,6 +47,14 @@
 // RUN:   %s -nogpuinc -nogpulib \
 // RUN: 2>&1 | FileCheck -check-prefixes=AMDGCNSPIRV-NEW %s
 
+// SPIR-V requires the LTO pipeline; --no-lto must not be passed.
+// RUN: %clang -### --target=x86_64-linux-gnu -fno-gpu-rdc \
+// RUN:   --offload-arch=amdgcnspirv -nogpuinc -nogpulib \
+// RUN:   %s 2>&1 | FileCheck -check-prefixes=SPIRV-NO-LTO %s
+// SPIRV-NO-LTO: {{".*clang-linker-wrapper}}
+// SPIRV-NO-LTO-NOT: "--no-lto"
+// SPIRV-NO-LTO-SAME: "--emit-fatbin-only"
+
 // Profile generation needs LTO, so the linker wrapper must not get --no-lto.
 // RUN: %clang -### --target=x86_64-linux-gnu -fno-gpu-rdc -fprofile-generate \
 // RUN:   -x hip --cuda-gpu-arch=gfx900 -nogpuinc -nogpulib --offload-new-driver \



More information about the cfe-commits mailing list