Ops that were modifed in-place (finalizeRootUpdate was called) should be reprocessed by the GreedyPatternRewriter. This is currently not happening with GreedyRewriteConfig::maxIterations = 1.
Note: If your project goes into an infinite loop because of this change, you likely have one or multiple faulty patterns that modify the same operations in-place (updateRootInplace) indefinitely.
It would be nice if we could just have something on one of the existing test passes, instead of using a unittest. We generally don't use unittests to test IR/pattern/transformation/etc. changes.
See mlir/test/lib/Dialect/Test/TestPatterns.cpp