[Mlir-commits] [mlir] 242b309 - [mlir][Linalg][Transform] Fail gracefully instead of asserting
Nicolas Vasilache
llvmlistbot at llvm.org
Thu Jun 8 07:19:38 PDT 2023
Author: Nicolas Vasilache
Date: 2023-06-08T14:16:35Z
New Revision: 242b3091f9a39e60b6d7d6350882e60021644144
URL: https://github.com/llvm/llvm-project/commit/242b3091f9a39e60b6d7d6350882e60021644144
DIFF: https://github.com/llvm/llvm-project/commit/242b3091f9a39e60b6d7d6350882e60021644144.diff
LOG: [mlir][Linalg][Transform] Fail gracefully instead of asserting
Added:
Modified:
mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp b/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp
index 5ef34b198d789..67c6d163a9512 100644
--- a/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp
+++ b/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp
@@ -392,9 +392,14 @@ static FailureOr<ForallTilingResult> tileToForallOpImpl(
FailureOr<TilingResult> tilingResult =
cast<TilingInterface>(clonedOp).getTiledImplementation(b, tiledOffsets,
tiledSizes);
+ if (failed(tilingResult))
+ return clonedOp->emitError("Failed to tile op: ");
+ if (tilingResult->tiledOps.size() != 1) {
+ return clonedOp->emitError("expected a single produced tiled op, got ")
+ << tilingResult->tiledOps.size();
+ }
+
b.eraseOp(clonedOp);
- assert(tilingResult->tiledOps.size() == 1 &&
- "expected a single produced tiled op");
tiledOp = tilingResult->tiledOps.front();
tiledValues = tilingResult->tiledValues;
}
@@ -733,8 +738,12 @@ FailureOr<linalg::ForallReductionTilingResult> linalg::tileReductionUsingForall(
FailureOr<TilingResult> tilingResult =
cast<TilingInterface>(clonedOp).getTiledImplementation(
b, tiledOffsets, tiledSizes);
- assert(tilingResult->tiledOps.size() == 1 &&
- "expected a single produced tiled op");
+ if (failed(tilingResult))
+ return clonedOp->emitError("Failed to tile op: ");
+ if (tilingResult->tiledOps.size() != 1) {
+ return clonedOp->emitError("expected a single produced tiled op, got ")
+ << tilingResult->tiledOps.size();
+ }
tiledOp = tilingResult->tiledOps.front();
tilingResults = tilingResult->tiledValues;
} else {
@@ -747,8 +756,9 @@ FailureOr<linalg::ForallReductionTilingResult> linalg::tileReductionUsingForall(
SmallVector<Value> ids = forallOp.getInductionVars();
mapLoopToProcessorIds(cast<scf::ForOp>(maybeTiled->loops.back()), ids,
materializedNonZeroNumThreads);
- assert(maybeTiled->loops.size() == 1 &&
- "expected a single produced loop");
+ if (maybeTiled->loops.size() != 1) {
+ return clonedOp->emitError("expected a single produced loop");
+ }
tiledOp = maybeTiled->op;
tilingResults = maybeTiled->loops.front()->getResults();
}
More information about the Mlir-commits
mailing list