[mlir][IR][tests] Fix incorrect API usage in RewritePatterns
authorMatthias Springer <me@m-sp.org>
Mon, 15 May 2023 12:39:50 +0000 (14:39 +0200)
committerMatthias Springer <me@m-sp.org>
Mon, 15 May 2023 12:40:42 +0000 (14:40 +0200)
Incorrect API usage was detected by D144552.

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

mlir/test/lib/Dialect/Test/TestPatterns.cpp

index a61ba8e..82ae72a 100644 (file)
@@ -192,7 +192,9 @@ struct HoistEligibleOps : public OpRewritePattern<test::OneRegionOp> {
       return failure();
     if (!toBeHoisted->hasAttr("eligible"))
       return failure();
-    toBeHoisted->moveBefore(op);
+    // Hoisting means removing an op from the enclosing op. I.e., the enclosing
+    // op is modified.
+    rewriter.updateRootInPlace(op, [&]() { toBeHoisted->moveBefore(op); });
     return success();
   }
 };
@@ -316,7 +318,8 @@ private:
       Operation *newOp =
           rewriter.create(op->getLoc(), op->getName().getIdentifier(),
                           op->getOperands(), op->getResultTypes());
-      op->setAttr("skip", rewriter.getBoolAttr(true));
+      rewriter.updateRootInPlace(
+          op, [&]() { op->setAttr("skip", rewriter.getBoolAttr(true)); });
       newOp->setAttr("skip", rewriter.getBoolAttr(true));
 
       return success();