diff --git a/mlir/lib/Dialect/ControlFlow/IR/ControlFlowOps.cpp b/mlir/lib/Dialect/ControlFlow/IR/ControlFlowOps.cpp index 6b6511101bc36..aaaf390826d67 100644 --- a/mlir/lib/Dialect/ControlFlow/IR/ControlFlowOps.cpp +++ b/mlir/lib/Dialect/ControlFlow/IR/ControlFlowOps.cpp @@ -475,6 +475,20 @@ void SwitchOp::build(OpBuilder &builder, OperationState &result, Value value, caseValuesAttr, caseDestinations, caseOperands); } +void SwitchOp::build(OpBuilder &builder, OperationState &result, Value value, + Block *defaultDestination, ValueRange defaultOperands, + ArrayRef caseValues, BlockRange caseDestinations, + ArrayRef caseOperands) { + DenseIntElementsAttr caseValuesAttr; + if (!caseValues.empty()) { + ShapedType caseValueType = VectorType::get( + static_cast(caseValues.size()), value.getType()); + caseValuesAttr = DenseIntElementsAttr::get(caseValueType, caseValues); + } + build(builder, result, value, defaultDestination, defaultOperands, + caseValuesAttr, caseDestinations, caseOperands); +} + /// ::= `default` `:` bb-id (`(` ssa-use-and-type-list `)`)? /// ( `,` integer `:` bb-id (`(` ssa-use-and-type-list `)`)? )* static ParseResult parseSwitchOpCases(