[mlir] Assert region is within config scope in RegionPatternRewriteDriver#193177
Merged
Conversation
Member
|
@llvm/pr-subscribers-mlir @llvm/pr-subscribers-mlir-core Author: Mehdi Amini (joker-eph) ChangesAssisted-by: Claude Code Full diff: https://github.com/llvm/llvm-project/pull/193177.diff 2 Files Affected:
diff --git a/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h b/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h
index d56d7e58c35f9..b21efc25cb963 100644
--- a/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h
+++ b/mlir/include/mlir/Transforms/GreedyPatternRewriteDriver.h
@@ -92,7 +92,9 @@ class GreedyRewriteConfig {
/// Only ops within the scope are added to the worklist. If no scope is
/// specified, the closest enclosing region around the initial list of ops
/// (or the specified region, depending on which greedy rewrite entry point
- /// is used) is used as a scope.
+ /// is used) is used as a scope. When using the region-based entry point, the
+ /// scope must not be narrower than the provided region (i.e., the region must
+ /// be nested within the scope, or equal to it).
Region *getScope() const { return scope; }
GreedyRewriteConfig &setScope(Region *scope) {
this->scope = scope;
@@ -167,6 +169,8 @@ class GreedyRewriteConfig {
/// A region scope can be set in the configuration parameter. By default, the
/// scope is set to the specified region. Only in-scope ops are added to the
/// worklist and only in-scope ops are allowed to be modified by the patterns.
+/// If a scope is set explicitly, it must not be narrower than `region` (i.e.,
+/// `region` must be nested within the scope, or equal to it).
///
/// Returns "success" if the iterative process converged (i.e., fixpoint was
/// reached) and no more patterns can be matched within the region. `changed`
diff --git a/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp b/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp
index 578e680535bed..165e9971a4ac4 100644
--- a/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp
+++ b/mlir/lib/Transforms/Utils/GreedyPatternRewriteDriver.cpp
@@ -781,7 +781,8 @@ void GreedyPatternRewriteDriver::notifyMatchFailure(
//===----------------------------------------------------------------------===//
namespace {
-/// This driver simplfies all ops in a region.
+/// This driver simplfies all ops in a region. If a scope is set in the
+/// config, the provided region must be within that scope.
class RegionPatternRewriteDriver : public GreedyPatternRewriteDriver {
public:
explicit RegionPatternRewriteDriver(MLIRContext *ctx,
@@ -807,6 +808,13 @@ RegionPatternRewriteDriver::RegionPatternRewriteDriver(
if (config.getStrictness() != GreedyRewriteStrictness::AnyOp) {
region.walk([&](Operation *op) { strictModeFilteredOps.insert(op); });
}
+ // Verify that the region is within the configured scope (if any).
+ if (Region *scope = config.getScope()) {
+ Region *r = ®ion;
+ while (r && r != scope)
+ r = r->getParentRegion();
+ assert(r && "provided region is not within the config scope");
+ }
}
namespace {
|
matthias-springer
approved these changes
Apr 21, 2026
caba644 to
3bbe75e
Compare
…iver Assisted-by: Claude Code
3bbe75e to
3a7e33f
Compare
linuxlonelyeagle
pushed a commit
to linuxlonelyeagle/llvm-project
that referenced
this pull request
Apr 23, 2026
…iver (llvm#193177) Assisted-by: Claude Code
KHicketts
pushed a commit
to KHicketts/llvm-project
that referenced
this pull request
Apr 30, 2026
…iver (llvm#193177) Assisted-by: Claude Code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Assisted-by: Claude Code