[mlir] Add error message on shape.broadcast verification failure
authorTres Popp <tpopp@google.com>
Mon, 15 Feb 2021 09:58:25 +0000 (10:58 +0100)
committerTres Popp <tpopp@google.com>
Mon, 15 Feb 2021 09:58:53 +0000 (10:58 +0100)
mlir/include/mlir/Dialect/Shape/IR/ShapeOps.td
mlir/lib/Dialect/Shape/IR/Shape.cpp

index f917f2e..20b0706 100644 (file)
@@ -89,10 +89,7 @@ def Shape_BroadcastOp : Shape_Op<"broadcast", [Commutative]> {
   ];
 
   let hasFolder = 1;
-  let verifier = [{
-    return success(succeeded(::verifyShapeOrExtentTensorOp(*this)) &&
-                   getNumOperands() >= 2);
-  }];
+  let verifier = [{ return ::verify(*this); }];
 }
 
 def Shape_ConstShapeOp : Shape_Op<"const_shape", [ConstantLike, NoSideEffect]> {
index 9657f95..8c75bdc 100644 (file)
@@ -383,6 +383,14 @@ OpFoldResult BroadcastOp::fold(ArrayRef<Attribute> operands) {
   return builder.getIndexTensorAttr(resultShape);
 }
 
+static LogicalResult verify(BroadcastOp op) {
+  // Ensure that AssumingAllOp contains at least one operand
+  if (op.getNumOperands() < 2)
+    return op.emitOpError("required at least 2 input shapes");
+
+  return verifyShapeOrExtentTensorOp(op);
+}
+
 //===----------------------------------------------------------------------===//
 // ConcatOp
 //===----------------------------------------------------------------------===//