diff options
author | Jianbang Yang <yangjianbang112@gmail.com> | 2024-03-25 21:08:18 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-25 21:08:18 +0800 |
commit | 4bb9f918ff4e2a932ce1e3da5f14103778b04136 (patch) | |
tree | 2167376d1bb4916fa7f28243227911824700e916 /mlir/lib | |
parent | 46a737cef2a709d5c121ab616fc80088ce2eed46 (diff) | |
download | llvm-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.cpp | 3 |
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( |