Author: Nathan Gauër Date: 2025-06-18T17:26:40+02:00 New Revision: 3af4d4e8100fda2a7e1bd0dbbe0914b584ad08d6
URL: https://github.com/llvm/llvm-project/commit/3af4d4e8100fda2a7e1bd0dbbe0914b584ad08d6 DIFF: https://github.com/llvm/llvm-project/commit/3af4d4e8100fda2a7e1bd0dbbe0914b584ad08d6.diff LOG: [HLSL][SPIR-V] Fix LinkageAttribute emission for BuiltIn (#144701) BuiltIn variables were missing the visibility attribute, which caused the Linkage capability to be emitted by the backend. Added: llvm/test/CodeGen/SPIRV/linkage/link-attribute-vk.ll Modified: clang/lib/CodeGen/CGHLSLRuntime.cpp clang/test/CodeGenHLSL/semantics/SV_Position.ps.hlsl Removed: ################################################################################ diff --git a/clang/lib/CodeGen/CGHLSLRuntime.cpp b/clang/lib/CodeGen/CGHLSLRuntime.cpp index 585411bc59e16..34960c34e109f 100644 --- a/clang/lib/CodeGen/CGHLSLRuntime.cpp +++ b/clang/lib/CodeGen/CGHLSLRuntime.cpp @@ -375,6 +375,7 @@ static llvm::Value *createSPIRVBuiltinLoad(IRBuilder<> &B, llvm::Module &M, llvm::GlobalVariable::GeneralDynamicTLSModel, /* AddressSpace */ 7, /* isExternallyInitialized= */ true); addSPIRVBuiltinDecoration(GV, BuiltInID); + GV->setVisibility(llvm::GlobalValue::HiddenVisibility); return B.CreateLoad(Ty, GV); } diff --git a/clang/test/CodeGenHLSL/semantics/SV_Position.ps.hlsl b/clang/test/CodeGenHLSL/semantics/SV_Position.ps.hlsl index 58b91fc9264dd..bdba38e028edd 100644 --- a/clang/test/CodeGenHLSL/semantics/SV_Position.ps.hlsl +++ b/clang/test/CodeGenHLSL/semantics/SV_Position.ps.hlsl @@ -1,6 +1,6 @@ // RUN: %clang_cc1 -triple spirv-unknown-vulkan1.3-pixel -x hlsl -emit-llvm -finclude-default-header -disable-llvm-passes -o - %s | FileCheck %s -// CHECK: @sv_position = external thread_local addrspace(7) externally_initialized constant <4 x float>, !spirv.Decorations !0 +// CHECK: @sv_position = external hidden thread_local addrspace(7) externally_initialized constant <4 x float>, !spirv.Decorations !0 // CHECK: define void @main() {{.*}} { float4 main(float4 p : SV_Position) { diff --git a/llvm/test/CodeGen/SPIRV/linkage/link-attribute-vk.ll b/llvm/test/CodeGen/SPIRV/linkage/link-attribute-vk.ll new file mode 100644 index 0000000000000..d4ba61ff58d32 --- /dev/null +++ b/llvm/test/CodeGen/SPIRV/linkage/link-attribute-vk.ll @@ -0,0 +1,23 @@ +; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-vulkan1.3-pixel %s -o - | FileCheck %s +; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-vulkan1.3-pixel %s -o - -filetype=obj | spirv-val --target-env vulkan1.3 %} + +@sv_position = external hidden thread_local local_unnamed_addr addrspace(7) externally_initialized constant <4 x float>, !spirv.Decorations !0 + +; CHECK-NOT: OpDecorate %[[#var]] LinkageAttributes "sv_position" Import + +; CHECK-DAG: %[[#float:]] = OpTypeFloat 32 +; CHECK-DAG: %[[#float4:]] = OpTypeVector %[[#float]] +; CHECK-DAG: %[[#type:]] = OpTypePointer Input %[[#float4]] +; CHECK-DAG: %[[#var:]] = OpVariable %[[#type]] Input + +; CHECK-NOT: OpDecorate %[[#var]] LinkageAttributes "sv_position" Import + +define void @main() #1 { +entry: + ret void +} + +attributes #1 = { "hlsl.shader"="pixel" } + +!0 = !{!1} +!1 = !{i32 11, i32 0} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits