[llvm] [SPIR-V] Fix legalization rewriting non-zero size arrays to pointers (PR #222276)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 9 02:21:12 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-spir-v
Author: Arseniy Obolenskiy (aobolensk)
<details>
<summary>Changes</summary>
legalizeType checked `isa<ArrayType>` with no size guard
Use `shouldLegalizeInstType`, which already checks for zero size
---
Full diff: https://github.com/llvm/llvm-project/pull/222276.diff
2 Files Affected:
- (modified) llvm/lib/Target/SPIRV/SPIRVLegalizeZeroSizeArrays.cpp (+1-1)
- (modified) llvm/test/CodeGen/SPIRV/legalize-zero-size-arrays-struct.ll (+6)
``````````diff
diff --git a/llvm/lib/Target/SPIRV/SPIRVLegalizeZeroSizeArrays.cpp b/llvm/lib/Target/SPIRV/SPIRVLegalizeZeroSizeArrays.cpp
index b5c3e1a2a9307..60b2bec63923a 100644
--- a/llvm/lib/Target/SPIRV/SPIRVLegalizeZeroSizeArrays.cpp
+++ b/llvm/lib/Target/SPIRV/SPIRVLegalizeZeroSizeArrays.cpp
@@ -114,7 +114,7 @@ Type *SPIRVLegalizeZeroSizeArraysImpl::legalizeType(Type *Ty) {
Type *LegalizedTy = Ty;
- if (isa<ArrayType>(Ty)) {
+ if (shouldLegalizeInstType(Ty)) {
LegalizedTy = PointerType::get(
Ty->getContext(),
storageClassToAddressSpace(SPIRV::StorageClass::Generic));
diff --git a/llvm/test/CodeGen/SPIRV/legalize-zero-size-arrays-struct.ll b/llvm/test/CodeGen/SPIRV/legalize-zero-size-arrays-struct.ll
index d340417cbfdc8..e48eb239cebd1 100644
--- a/llvm/test/CodeGen/SPIRV/legalize-zero-size-arrays-struct.ll
+++ b/llvm/test/CodeGen/SPIRV/legalize-zero-size-arrays-struct.ll
@@ -7,5 +7,11 @@
@global_struct = addrspace(1) global %struct.with_zero zeroinitializer
+%struct.mixed = type { [4 x i32], [0 x i32] }
+
+ at global_mixed = addrspace(1) global %struct.mixed zeroinitializer
+
; CHECK: %struct.with_zero.legalized = type { i32, ptr addrspace(4), i32 }
+; CHECK: %struct.mixed.legalized = type { [4 x i32], ptr addrspace(4) }
; CHECK: @global_struct = addrspace(1) global %struct.with_zero.legalized zeroinitializer
+; CHECK: @global_mixed = addrspace(1) global %struct.mixed.legalized zeroinitializer
``````````
</details>
https://github.com/llvm/llvm-project/pull/222276
More information about the llvm-commits
mailing list