[Mlir-commits] [mlir] [mlir][linalg] Add test for ReduceOp empty-input verifier; remove dead empty-output check (PR #189614)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Tue Mar 31 04:28:22 PDT 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-mlir-linalg

Author: Mehdi Amini (joker-eph)

<details>
<summary>Changes</summary>

Add a FileCheck test covering the 'expected at least one input' error in ReduceOp::verify(). The companion 'expected at least one output' check was dead code: SameVariadicOperandSize fires first whenever inputs.size() \!= inits.size(), and when both are empty the input check fires first; remove the unreachable branch.

Assisted-by: Claude Code

---
Full diff: https://github.com/llvm/llvm-project/pull/189614.diff


2 Files Affected:

- (modified) mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp (-2) 
- (modified) mlir/test/Dialect/Linalg/invalid.mlir (+12) 


``````````diff
diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
index e9698365765e7..f9c8589683ba7 100644
--- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
+++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
@@ -1897,8 +1897,6 @@ LogicalResult ReduceOp::verify() {
 
   if (getInputs().empty())
     return emitOpError() << "expected at least one input";
-  if (getInits().empty())
-    return emitOpError() << "expected at least one output";
 
   for (int64_t i = 1; i < getNumDpsInputs(); ++i) {
     if (llvm::cast<ShapedType>(getInputs()[i].getType()).getShape() !=
diff --git a/mlir/test/Dialect/Linalg/invalid.mlir b/mlir/test/Dialect/Linalg/invalid.mlir
index d9192cbda14e7..25dba5d11cc77 100644
--- a/mlir/test/Dialect/Linalg/invalid.mlir
+++ b/mlir/test/Dialect/Linalg/invalid.mlir
@@ -2194,3 +2194,15 @@ func.func @reduce_unequal_input_output_count(
   %ext = tensor.extract %reduced[] : tensor<i32>
   return %ext : i32
 }
+
+// -----
+
+func.func @reduce_no_inputs() {
+  // expected-error @+1 {{'linalg.reduce' op expected at least one input}}
+  linalg.reduce
+      dimensions = []
+      () {
+        linalg.yield
+      }
+  func.return
+}

``````````

</details>


https://github.com/llvm/llvm-project/pull/189614


More information about the Mlir-commits mailing list