[Mlir-commits] [mlir] [MLIR][Tensor] Fix out-of-bounds FoldEmptyTensorWithDimOp crash #111270 (PR #112196)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Oct 14 11:00:35 PDT 2024
================
@@ -979,7 +979,9 @@ struct FoldEmptyTensorWithDimOp : public OpRewritePattern<DimOp> {
auto emptyTensorOp = dimOp.getSource().getDefiningOp<EmptyOp>();
if (!emptyTensorOp || !maybeConstantIndex)
return failure();
- if (!emptyTensorOp.getType().isDynamicDim(*maybeConstantIndex))
+ auto emptyTensorType = emptyTensorOp.getType();
----------------
brod4910 wrote:
Hi @MaheshRavishankar thanks for your review!
Here is the original repro.
`mlir-opt --linalg-fold-unit-extent-dims a.mlir`
a.mlir:
```mlir
func.func @func1() -> index {
%3 = tensor.empty() : tensor<19x15x1xf16>
%idx10 = index.constant 10
%dim_162 = tensor.dim %3, %idx10 : tensor<19x15x1xf16> // index out-of-bounds
return %dim_162 : index
}
```
>From my understanding, OOBs `tensor.dim` operations result in UB but that doesn't mean that the IR is invalid (or does it?). The crash here is unexpected due to the assertion check OOBs accesses in`isDynamicDim`.
https://github.com/llvm/llvm-project/pull/112196
More information about the Mlir-commits
mailing list