[Mlir-commits] [mlir] [mlir] Improve `GreedyPatternRewriteDriver` and pass documentation (PR #77614)
Matthias Springer
llvmlistbot at llvm.org
Thu Jan 11 01:31:01 PST 2024
================
@@ -23,16 +23,21 @@ further below. All passes in MLIR derive from `OperationPass` and adhere to the
following restrictions; any noncompliance will lead to problematic behavior in
multithreaded and other advanced scenarios:
-* Must not modify any state referenced or relied upon outside the current
- operation being operated on. This includes adding or removing operations
- from the parent block, changing the attributes(depending on the contract
- of the current operation)/operands/results/successors of the current operation.
-* Must not modify the state of another operation not nested within the current
- operation being operated on.
- * Other threads may be operating on these operations simultaneously.
-* Must not inspect the state of sibling operations.
+* Must not inspect the state of operations that are siblings of the operation
+ that the pass operates on. Must neither access operations nested under those
+ siblings.
* Other threads may be modifying these operations in parallel.
* Inspecting the state of ancestor/parent operations is permitted.
+* Must not modify the state of operations other than the operation that the
+ pass operates on ("current operation") and its nested operations. This
+ includes adding, modifying or removing other operations from an ancestor
+ block.
+ * Other threads may be operating on these operations simultaneously.
+ * The attributes of the current operation may be modified freely.
+ * The operands of the current operation may be modified, as long as no
----------------
matthias-springer wrote:
Ok, that's what I thought... So the only permissible change to the operation that the pass operates on is "modifying attributes". I updates the docs accordingly.
https://github.com/llvm/llvm-project/pull/77614
More information about the Mlir-commits
mailing list