From abd9129bd6efaa05e9f0f6351d00587f95eb93c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?= Date: Mon, 20 Oct 2025 15:16:13 +0200 Subject: [PATCH 1/2] [NFC][SPIRV] Add test: call hidden function declaration --- llvm/test/CodeGen/SPIRV/linkage/link-hidden.ll | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 llvm/test/CodeGen/SPIRV/linkage/link-hidden.ll diff --git a/llvm/test/CodeGen/SPIRV/linkage/link-hidden.ll b/llvm/test/CodeGen/SPIRV/linkage/link-hidden.ll new file mode 100644 index 0000000000000..c36dd69cb5d08 --- /dev/null +++ b/llvm/test/CodeGen/SPIRV/linkage/link-hidden.ll @@ -0,0 +1,11 @@ +; RUN: not llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-unknown %s -o - 2>&1 | FileCheck %s +; CHECK: LLVM ERROR: Unknown function in: +; CHECK-SAME: OpFunctionCall %{{[0-9]+}}:type, @bar + +define hidden spir_kernel void @foo() addrspace(4) { +entry: + call spir_func addrspace(4) void @bar() + ret void +} + +declare hidden spir_func void @bar() addrspace(4) From c8ebf766367b986c253212e69636c77dc69677a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Manuel=20Martinez=20Caama=C3=B1o?= Date: Mon, 20 Oct 2025 15:45:24 +0200 Subject: [PATCH 2/2] [SPIRV] Emit LinkageType for function with hidden visibility --- llvm/lib/Target/SPIRV/SPIRVUtils.cpp | 2 +- llvm/test/CodeGen/SPIRV/linkage/link-hidden.ll | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/llvm/lib/Target/SPIRV/SPIRVUtils.cpp b/llvm/lib/Target/SPIRV/SPIRVUtils.cpp index 4e2cc882ed6ba..b4b2c8d5947ce 100644 --- a/llvm/lib/Target/SPIRV/SPIRVUtils.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVUtils.cpp @@ -1042,7 +1042,7 @@ getFirstValidInstructionInsertPoint(MachineBasicBlock &BB) { std::optional getSpirvLinkageTypeFor(const SPIRVSubtarget &ST, const GlobalValue &GV) { - if (GV.hasLocalLinkage() || GV.hasHiddenVisibility()) + if (GV.hasLocalLinkage()) return std::nullopt; if (GV.isDeclarationForLinker()) diff --git a/llvm/test/CodeGen/SPIRV/linkage/link-hidden.ll b/llvm/test/CodeGen/SPIRV/linkage/link-hidden.ll index c36dd69cb5d08..f4172df38ee8b 100644 --- a/llvm/test/CodeGen/SPIRV/linkage/link-hidden.ll +++ b/llvm/test/CodeGen/SPIRV/linkage/link-hidden.ll @@ -1,6 +1,9 @@ -; RUN: not llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-unknown %s -o - 2>&1 | FileCheck %s -; CHECK: LLVM ERROR: Unknown function in: -; CHECK-SAME: OpFunctionCall %{{[0-9]+}}:type, @bar +; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-unknown %s -o - | FileCheck %s +; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-unknown %s -o - -filetype=obj | spirv-val %} + +; CHECK: OpName %[[BAR:[0-9]+]] "bar" +; CHECK: OpDecorate %[[BAR]] LinkageAttributes "bar" Import +; CHECK: %[[BAR]] = OpFunction define hidden spir_kernel void @foo() addrspace(4) { entry: