Skip to content

Commit 6ba6039

Browse files
authored
[mlir][spirv] Handle all zero-element memref types (#73351)
Bail out of type conversion instead of crashing. Fixes: #73289
1 parent d896b1f commit 6ba6039

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

mlir/lib/Dialect/SPIRV/Transforms/SPIRVConversion.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,12 @@ static Type convertBoolMemrefType(const spirv::TargetEnv &targetEnv,
469469
return wrapInStructAndGetPointer(arrayType, storageClass);
470470
}
471471

472+
if (type.getNumElements() == 0) {
473+
LLVM_DEBUG(llvm::dbgs()
474+
<< type << " illegal: zero-element memrefs are not supported\n");
475+
return nullptr;
476+
}
477+
472478
int64_t memrefSize = llvm::divideCeil(type.getNumElements() * numBoolBits, 8);
473479
int64_t arrayElemCount = llvm::divideCeil(memrefSize, *arrayElemSize);
474480
int64_t stride = needsExplicitLayout(storageClass) ? *arrayElemSize : 0;
@@ -500,6 +506,12 @@ static Type convertSubByteMemrefType(const spirv::TargetEnv &targetEnv,
500506
return wrapInStructAndGetPointer(arrayType, storageClass);
501507
}
502508

509+
if (type.getNumElements() == 0) {
510+
LLVM_DEBUG(llvm::dbgs()
511+
<< type << " illegal: zero-element memrefs are not supported\n");
512+
return nullptr;
513+
}
514+
503515
int64_t memrefSize =
504516
llvm::divideCeil(type.getNumElements() * elementType.getWidth(), 8);
505517
int64_t arrayElemCount = llvm::divideCeil(memrefSize, arrayElemSize);

mlir/test/Conversion/MemRefToSPIRV/alloc.mlir

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,8 @@ module attributes {
187187
{
188188
func.func @zero_size() {
189189
%0 = memref.alloc() : memref<0xf32, #spirv.storage_class<Workgroup>>
190+
%1 = memref.alloc() : memref<0xi1, #spirv.storage_class<Workgroup>>
191+
%2 = memref.alloc() : memref<0xi4, #spirv.storage_class<Workgroup>>
190192
return
191193
}
192194
}

0 commit comments

Comments
 (0)