[Mlir-commits] [mlir] [mlir][spirv] Fix a crash of typeConverter with non supported type (PR #79955)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Jan 29 23:22:19 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir-spirv
Author: Kohei Yamaguchi (sott0n)
<details>
<summary>Changes</summary>
Fixes a crash in the `convert-to-spirv-llvm` pass caused by unsupported types (e.g.,
`spirv.matrix` ). This PR fixes it by checking the converted type.
Fixes #<!-- -->60017
---
Full diff: https://github.com/llvm/llvm-project/pull/79955.diff
1 Files Affected:
- (modified) mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp (+7-6)
``````````diff
diff --git a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
index c62e676efc159..c7c67c04c8919 100644
--- a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
+++ b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
@@ -367,12 +367,13 @@ class AccessChainPattern : public SPIRVToLLVMConversion<spirv::AccessChainOp> {
Value zero = rewriter.create<LLVM::ConstantOp>(
op.getLoc(), llvmIndexType, rewriter.getIntegerAttr(indexType, 0));
indices.insert(indices.begin(), zero);
- rewriter.replaceOpWithNewOp<LLVM::GEPOp>(
- op, dstType,
- typeConverter.convertType(
- cast<spirv::PointerType>(op.getBasePtr().getType())
- .getPointeeType()),
- adaptor.getBasePtr(), indices);
+
+ auto elementType = typeConverter.convertType(
+ cast<spirv::PointerType>(op.getBasePtr().getType()).getPointeeType());
+ if (!elementType)
+ return failure();
+ rewriter.replaceOpWithNewOp<LLVM::GEPOp>(op, dstType, elementType,
+ adaptor.getBasePtr(), indices);
return success();
}
};
``````````
</details>
https://github.com/llvm/llvm-project/pull/79955
More information about the Mlir-commits
mailing list