[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