[Mlir-commits] [mlir] [MLIR][Affine] Fix affine.parallel op verifier (PR #127611)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Tue Feb 18 02:24:16 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir-affine
Author: Uday Bondhugula (bondhugula)
<details>
<summary>Changes</summary>
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
---
Full diff: https://github.com/llvm/llvm-project/pull/127611.diff
2 Files Affected:
- (modified) mlir/lib/Dialect/Affine/IR/AffineOps.cpp (+14-4)
- (modified) mlir/test/Dialect/Affine/invalid.mlir (+18)
``````````diff
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..a0b2de64036c4 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 @zero_result_lower_bound_map() {
+ // expected-error at +1 {{expected lower bound map to have at least one result}}
+ affine.parallel (%arg2) = (max()) to (1) {
+ }
+ return
+}
+
+// -----
+
+func.func @zero_result_upper_bound_map() {
+ // 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 {
``````````
</details>
https://github.com/llvm/llvm-project/pull/127611
More information about the Mlir-commits
mailing list