[Mlir-commits] [mlir] [mlir][spirv] Fix a crash of typeConverter with non supported type (PR #79955)
Kohei Yamaguchi
llvmlistbot at llvm.org
Tue Jan 30 16:44:29 PST 2024
https://github.com/sott0n updated https://github.com/llvm/llvm-project/pull/79955
>From 4abb2ac407ff9c89d951def478349f924fb7139d Mon Sep 17 00:00:00 2001
From: Kohei Yamaguchi <fix7211 at gmail.com>
Date: Tue, 30 Jan 2024 15:43:57 +0000
Subject: [PATCH 1/2] [mlir][spirv] Fix a crash of typeConverter with non
supported type
---
mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
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();
}
};
>From c0beb3feae88e878fb7db9647563430ea05f353f Mon Sep 17 00:00:00 2001
From: Kohei Yamaguchi <fix7211 at gmail.com>
Date: Wed, 31 Jan 2024 09:40:39 +0000
Subject: [PATCH 2/2] addressed comment
---
mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
index c7c67c04c8919..607f4c595169f 100644
--- a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
+++ b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
@@ -371,7 +371,7 @@ class AccessChainPattern : public SPIRVToLLVMConversion<spirv::AccessChainOp> {
auto elementType = typeConverter.convertType(
cast<spirv::PointerType>(op.getBasePtr().getType()).getPointeeType());
if (!elementType)
- return failure();
+ return rewriter.notifyMatchFailure(op, "type conversion failed");
rewriter.replaceOpWithNewOp<LLVM::GEPOp>(op, dstType, elementType,
adaptor.getBasePtr(), indices);
return success();
More information about the Mlir-commits
mailing list