diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp index e9698365765e..f9c8589683ba 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(getInputs()[i].getType()).getShape() != diff --git a/mlir/test/Dialect/Linalg/invalid.mlir b/mlir/test/Dialect/Linalg/invalid.mlir index a70c7ceb19ba..06f3fcb41190 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 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 +}