[Mlir-commits] [mlir] 3c938d0 - [MLIR][Affine] Fix affine.parallel op verifier (#127611)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Feb 19 02:26:26 PST 2025
Author: Uday Bondhugula
Date: 2025-02-19T15:56:23+05:30
New Revision: 3c938d0d534221c44bd2477e7f95c7b5bbb6fc7a
URL: https://github.com/llvm/llvm-project/commit/3c938d0d534221c44bd2477e7f95c7b5bbb6fc7a
DIFF: https://github.com/llvm/llvm-project/commit/3c938d0d534221c44bd2477e7f95c7b5bbb6fc7a.diff
LOG: [MLIR][Affine] Fix affine.parallel op verifier (#127611)
Fix affine.parallel op verifier for missing check on zero result lower
or upper bound maps. lb/ub maps should have at least one result.
Fixes: https://github.com/llvm/llvm-project/issues/120186
Added:
Modified:
mlir/lib/Dialect/Affine/IR/AffineOps.cpp
mlir/test/Dialect/Affine/invalid.mlir
Removed:
################################################################################
diff --git a/mlir/lib/Dialect/Affine/IR/AffineOps.cpp b/mlir/lib/Dialect/Affine/IR/AffineOps.cpp
index 147f5dd7a24b6..cfc51ad2a1524 100644
--- a/mlir/lib/Dialect/Affine/IR/AffineOps.cpp
+++ b/mlir/lib/Dialect/Affine/IR/AffineOps.cpp
@@ -3918,14 +3918,24 @@ LogicalResult AffineParallelOp::verify() {
}
unsigned expectedNumLBResults = 0;
- for (APInt v : getLowerBoundsGroups())
- expectedNumLBResults += v.getZExtValue();
+ for (APInt v : getLowerBoundsGroups()) {
+ unsigned results = v.getZExtValue();
+ if (results == 0)
+ return emitOpError()
+ << "expected lower bound map to have at least one result";
+ expectedNumLBResults += results;
+ }
if (expectedNumLBResults != getLowerBoundsMap().getNumResults())
return emitOpError() << "expected lower bounds map to have "
<< expectedNumLBResults << " results";
unsigned expectedNumUBResults = 0;
- for (APInt v : getUpperBoundsGroups())
- expectedNumUBResults += v.getZExtValue();
+ for (APInt v : getUpperBoundsGroups()) {
+ unsigned results = v.getZExtValue();
+ if (results == 0)
+ return emitOpError()
+ << "expected upper bound map to have at least one result";
+ expectedNumUBResults += results;
+ }
if (expectedNumUBResults != getUpperBoundsMap().getNumResults())
return emitOpError() << "expected upper bounds map to have "
<< expectedNumUBResults << " results";
diff --git a/mlir/test/Dialect/Affine/invalid.mlir b/mlir/test/Dialect/Affine/invalid.mlir
index 44e484b9ba598..da2913e3fec28 100644
--- a/mlir/test/Dialect/Affine/invalid.mlir
+++ b/mlir/test/Dialect/Affine/invalid.mlir
@@ -297,6 +297,24 @@ func.func @affine_parallel(%arg0 : index, %arg1 : index, %arg2 : index) {
// -----
+func.func @no_upper_bound_affine_parallel() {
+ // expected-error at +1 {{expected lower bound map to have at least one result}}
+ affine.parallel (%arg2) = (max()) to (1) {
+ }
+ return
+}
+
+// -----
+
+func.func @no_upper_bound_affine_parallel() {
+ // expected-error at +1 {{expected upper bound map to have at least one result}}
+ affine.parallel (%arg3) = (0) to (min()) {
+ }
+ return
+}
+
+// -----
+
func.func @vector_load_invalid_vector_type() {
%0 = memref.alloc() : memref<100xf32>
affine.for %i0 = 0 to 16 step 8 {
More information about the Mlir-commits
mailing list