[mlir] Catch async.yield operands not matching the number of async.execute results.
authorChristian Sigg <csigg@google.com>
Tue, 27 Oct 2020 08:45:55 +0000 (09:45 +0100)
committerChristian Sigg <csigg@google.com>
Tue, 27 Oct 2020 18:39:34 +0000 (19:39 +0100)
Reviewed By: ezhulenev

Differential Revision: https://reviews.llvm.org/D90211

mlir/lib/Dialect/Async/IR/Async.cpp

index 754665d..5ef3931 100644 (file)
@@ -105,8 +105,8 @@ static LogicalResult verify(YieldOp op) {
     return result.getType().cast<ValueType>().getValueType();
   });
 
-  if (!std::equal(types.begin(), types.end(), op.getOperandTypes().begin()))
-    return op.emitOpError("Operand types do not match the types returned from "
+  if (op.getOperandTypes() != types)
+    return op.emitOpError("operand types do not match the types returned from "
                           "the parent ExecuteOp");
 
   return success();
@@ -238,12 +238,7 @@ static LogicalResult verify(ExecuteOp op) {
   });
 
   // Verify that unwrapped argument types matches the body region arguments.
-  if (llvm::size(unwrappedTypes) != llvm::size(op.body().getArgumentTypes()))
-    return op.emitOpError("the number of async body region arguments does not "
-                          "match the number of execute operation arguments");
-
-  if (!std::equal(unwrappedTypes.begin(), unwrappedTypes.end(),
-                  op.body().getArgumentTypes().begin()))
+  if (op.body().getArgumentTypes() != unwrappedTypes)
     return op.emitOpError("async body region argument types do not match the "
                           "execute operation arguments types");