aboutsummaryrefslogtreecommitdiff
path: root/mlir/lib
diff options
context:
space:
mode:
authorJianbang Yang <yangjianbang112@gmail.com>2024-03-25 21:08:18 +0800
committerGitHub <noreply@github.com>2024-03-25 21:08:18 +0800
commit4bb9f918ff4e2a932ce1e3da5f14103778b04136 (patch)
tree2167376d1bb4916fa7f28243227911824700e916 /mlir/lib
parent46a737cef2a709d5c121ab616fc80088ce2eed46 (diff)
downloadllvm-4bb9f918ff4e2a932ce1e3da5f14103778b04136.zip
llvm-4bb9f918ff4e2a932ce1e3da5f14103778b04136.tar.gz
llvm-4bb9f918ff4e2a932ce1e3da5f14103778b04136.tar.bz2
[mlir][tensor] fix out-of-bound index in tensor.dim (#85901)
fix a crash when fold tensor.dim with out-of-bound index. Fixes: https://github.com/llvm/llvm-project/issues/70183
Diffstat (limited to 'mlir/lib')
-rw-r--r--mlir/lib/Dialect/Bufferization/IR/BufferizationOps.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/mlir/lib/Dialect/Bufferization/IR/BufferizationOps.cpp b/mlir/lib/Dialect/Bufferization/IR/BufferizationOps.cpp
index 2b226c7..a656c81 100644
--- a/mlir/lib/Dialect/Bufferization/IR/BufferizationOps.cpp
+++ b/mlir/lib/Dialect/Bufferization/IR/BufferizationOps.cpp
@@ -333,6 +333,9 @@ struct FoldDimOfAllocTensorOp : public OpRewritePattern<tensor::DimOp> {
auto allocTensorOp = dimOp.getSource().getDefiningOp<AllocTensorOp>();
if (!allocTensorOp || !maybeConstantIndex)
return failure();
+ if (*maybeConstantIndex < 0 ||
+ *maybeConstantIndex >= allocTensorOp.getType().getRank())
+ return failure();
if (!allocTensorOp.getType().isDynamicDim(*maybeConstantIndex))
return failure();
rewriter.replaceOp(