[Mlir-commits] [mlir] [mlir][nfc] Remove `TrivialPatternRewriter`s (PR #155248)

Ivan Butygin llvmlistbot at llvm.org
Mon Aug 25 07:30:41 PDT 2025


https://github.com/Hardcode84 created https://github.com/llvm/llvm-project/pull/155248

These are relics from the times when `PatternRewriter` was not instantiable directly, I suppose.

>From 52c72d33d8aeb139a47460ce2ae62d6d1e5070ed Mon Sep 17 00:00:00 2001
From: Ivan Butygin <ivan.butygin at gmail.com>
Date: Mon, 25 Aug 2025 16:23:22 +0200
Subject: [PATCH] Instantiate PatternRewriter directly

---
 .../lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp | 7 +------
 .../lib/Dialect/Transform/PDLExtension/PDLExtensionOps.cpp | 7 +------
 mlir/unittests/Rewrite/PatternBenefit.cpp                  | 7 +------
 3 files changed, 3 insertions(+), 18 deletions(-)

diff --git a/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp b/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
index 639e0feabc9bd..f0c1f4485b054 100644
--- a/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
+++ b/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
@@ -70,12 +70,7 @@ static FailureOr<LinalgOp> tryApply(Operation *operation, Args &&...args) {
   PatternTy pattern(operation->getContext(), std::forward<Args>(args)...);
   // We want to discourage direct use of PatternRewriter in APIs but In this
   // very specific case, an IRRewriter is not enough.
-  struct TrivialPatternRewriter : public PatternRewriter {
-  public:
-    explicit TrivialPatternRewriter(MLIRContext *context)
-        : PatternRewriter(context) {}
-  };
-  TrivialPatternRewriter rewriter(operation->getContext());
+  PatternRewriter rewriter(operation->getContext());
   rewriter.setInsertionPoint(operation);
   auto result = pattern.returningMatchAndRewrite(op, rewriter);
   if (failed(result))
diff --git a/mlir/lib/Dialect/Transform/PDLExtension/PDLExtensionOps.cpp b/mlir/lib/Dialect/Transform/PDLExtension/PDLExtensionOps.cpp
index 41955c8a278f2..3ced1a6582ce3 100644
--- a/mlir/lib/Dialect/Transform/PDLExtension/PDLExtensionOps.cpp
+++ b/mlir/lib/Dialect/Transform/PDLExtension/PDLExtensionOps.cpp
@@ -100,12 +100,7 @@ LogicalResult PatternApplicatorExtension::findAllMatches(
   PatternApplicator applicator(it->second);
   // We want to discourage direct use of PatternRewriter in APIs but In this
   // very specific case, an IRRewriter is not enough.
-  struct TrivialPatternRewriter : public PatternRewriter {
-  public:
-    explicit TrivialPatternRewriter(MLIRContext *context)
-        : PatternRewriter(context) {}
-  };
-  TrivialPatternRewriter rewriter(root->getContext());
+  PatternRewriter rewriter(root->getContext());
   applicator.applyDefaultCostModel();
   root->walk([&](Operation *op) {
     if (succeeded(applicator.matchAndRewrite(op, rewriter)))
diff --git a/mlir/unittests/Rewrite/PatternBenefit.cpp b/mlir/unittests/Rewrite/PatternBenefit.cpp
index 65ea4ee6683db..e4363f9f4b8bb 100644
--- a/mlir/unittests/Rewrite/PatternBenefit.cpp
+++ b/mlir/unittests/Rewrite/PatternBenefit.cpp
@@ -66,12 +66,7 @@ TEST(PatternBenefitTest, BenefitOrder) {
   PatternApplicator pa(frozenPatterns);
   pa.applyDefaultCostModel();
 
-  class MyPatternRewriter : public PatternRewriter {
-  public:
-    MyPatternRewriter(MLIRContext *ctx) : PatternRewriter(ctx) {}
-  };
-
-  MyPatternRewriter rewriter(&context);
+  PatternRewriter rewriter(&context);
   (void)pa.matchAndRewrite(*module, rewriter);
 
   EXPECT_TRUE(called1);



More information about the Mlir-commits mailing list