[mlir] Toy tutorial: avoid erasing and then re-creating loop terminators
authorAlex Zinenko <zinenko@google.com>
Tue, 2 Jun 2020 10:49:45 +0000 (12:49 +0200)
committerAlex Zinenko <zinenko@google.com>
Tue, 2 Jun 2020 10:54:03 +0000 (12:54 +0200)
The lower-to-affine-loops pass in chapters 5-7 of the Toy tutorial has
been creating affine loops, erasing their terminator and creating it
anew using a PatternRewriter instance to work around the fact that
implicit terminators were created without notifying the rewriter. Now
that has been fixed in 3ccf4a5bd109, remove the code erasing and
re-creating the terminators and rely on the default ones.

mlir/examples/toy/Ch5/mlir/LowerToAffineLoops.cpp
mlir/examples/toy/Ch6/mlir/LowerToAffineLoops.cpp
mlir/examples/toy/Ch7/mlir/LowerToAffineLoops.cpp

index 0514d8f..ffcb0e2 100644 (file)
@@ -72,14 +72,9 @@ static void lowerOpToLoops(Operation *op, ArrayRef<Value> operands,
   SmallVector<Value, 4> loopIvs;
   for (auto dim : tensorType.getShape()) {
     auto loop = rewriter.create<AffineForOp>(loc, /*lb=*/0, dim, /*step=*/1);
-    for (Operation &nested : *loop.getBody())
-      rewriter.eraseOp(&nested);
     loopIvs.push_back(loop.getInductionVar());
 
-    // Terminate the loop body and update the rewriter insertion point to the
-    // beginning of the loop.
-    rewriter.setInsertionPointToStart(loop.getBody());
-    rewriter.create<AffineTerminatorOp>(loc);
+    // Update the rewriter insertion point to the beginning of the loop.
     rewriter.setInsertionPointToStart(loop.getBody());
   }
 
index e7dceea..2c04822 100644 (file)
@@ -72,14 +72,9 @@ static void lowerOpToLoops(Operation *op, ArrayRef<Value> operands,
   SmallVector<Value, 4> loopIvs;
   for (auto dim : tensorType.getShape()) {
     auto loop = rewriter.create<AffineForOp>(loc, /*lb=*/0, dim, /*step=*/1);
-    for (Operation &nested : *loop.getBody())
-      rewriter.eraseOp(&nested);
     loopIvs.push_back(loop.getInductionVar());
 
-    // Terminate the loop body and update the rewriter insertion point to the
-    // beginning of the loop.
-    rewriter.setInsertionPointToStart(loop.getBody());
-    rewriter.create<AffineTerminatorOp>(loc);
+    // Update the rewriter insertion point to the beginning of the loop.
     rewriter.setInsertionPointToStart(loop.getBody());
   }
 
index 0514d8f..ffcb0e2 100644 (file)
@@ -72,14 +72,9 @@ static void lowerOpToLoops(Operation *op, ArrayRef<Value> operands,
   SmallVector<Value, 4> loopIvs;
   for (auto dim : tensorType.getShape()) {
     auto loop = rewriter.create<AffineForOp>(loc, /*lb=*/0, dim, /*step=*/1);
-    for (Operation &nested : *loop.getBody())
-      rewriter.eraseOp(&nested);
     loopIvs.push_back(loop.getInductionVar());
 
-    // Terminate the loop body and update the rewriter insertion point to the
-    // beginning of the loop.
-    rewriter.setInsertionPointToStart(loop.getBody());
-    rewriter.create<AffineTerminatorOp>(loc);
+    // Update the rewriter insertion point to the beginning of the loop.
     rewriter.setInsertionPointToStart(loop.getBody());
   }