[MLIR][SCF] Parenthesize multiple return types in scf.execute_region asm op
authorMorten Borup Petersen <morten_bp@live.dk>
Thu, 19 Aug 2021 19:34:43 +0000 (20:34 +0100)
committerMorten Borup Petersen <morten_bp@live.dk>
Thu, 19 Aug 2021 20:31:51 +0000 (21:31 +0100)
Previously, ExecuteRegionOps with multiple return values would fail a round-trip test due to missing parenthesis around the types.

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

mlir/lib/Dialect/SCF/SCF.cpp
mlir/test/Dialect/SCF/ops.mlir

index 2388162..e5c24bb 100644 (file)
@@ -115,8 +115,7 @@ static ParseResult parseExecuteRegionOp(OpAsmParser &parser,
 
 static void print(OpAsmPrinter &p, ExecuteRegionOp op) {
   p << ExecuteRegionOp::getOperationName();
-  if (op.getNumResults() > 0)
-    p << " -> " << op.getResultTypes();
+  p.printOptionalArrowTypeList(op.getResultTypes());
 
   p.printRegion(op.region(),
                 /*printEntryBlockArgs=*/false,
index 08932bf..f785b01 100644 (file)
@@ -291,6 +291,12 @@ func @execute_region() -> i64 {
     scf.yield %c1 : i64
   }
 
+  // CHECK:      scf.execute_region -> (i64, i64) {
+  %res2:2 = scf.execute_region -> (i64, i64) {
+    %c1 = constant 1 : i64
+    scf.yield %c1, %c1 : i64, i64
+  }
+
   // CHECK:       scf.execute_region {
   // CHECK-NEXT:    br ^bb1
   // CHECK-NEXT:  ^bb1: