diff --git a/mlir/include/mlir/Dialect/LoopOps/LoopOps.td b/mlir/include/mlir/Dialect/LoopOps/LoopOps.td --- a/mlir/include/mlir/Dialect/LoopOps/LoopOps.td +++ b/mlir/include/mlir/Dialect/LoopOps/LoopOps.td @@ -221,7 +221,10 @@ let skipDefaultBuilders = 1; let builders = [ OpBuilder<"Builder *builder, OperationState &result, " - "Value cond, bool withElseRegion"> + "Value cond, bool withElseRegion">, + OpBuilder<"Builder *builder, OperationState &result, " + "ArrayRef resultTypes, Value cond, " + "bool withElseRegion"> ]; let extraClassDeclaration = [{ diff --git a/mlir/lib/Dialect/LoopOps/LoopOps.cpp b/mlir/lib/Dialect/LoopOps/LoopOps.cpp --- a/mlir/lib/Dialect/LoopOps/LoopOps.cpp +++ b/mlir/lib/Dialect/LoopOps/LoopOps.cpp @@ -201,7 +201,13 @@ void IfOp::build(Builder *builder, OperationState &result, Value cond, bool withElseRegion) { + build(builder, result, llvm::None, cond, withElseRegion); +} + +void IfOp::build(Builder *builder, OperationState &result, + ArrayRef resultTypes, Value cond, bool withElseRegion) { result.addOperands(cond); + result.addTypes(resultTypes); Region *thenRegion = result.addRegion(); Region *elseRegion = result.addRegion(); IfOp::ensureTerminator(*thenRegion, *builder, result.location);