Looking at some of the code around commit e7a2ef21f9fc9f10e03b97e9e73055e3447a1aa7 I am wondering where the isolatedFromAbove requirement originates from.
I understand canonicalization may modify operations outside of the op the greedy rewriter would be invoked on but I am not sure why this would be a problem.
I am wondering whether that restriction was needed at the time of the bringup of the passmanager and multi-threading concerns in general or whether there is something specific to applying patterns that also needs such limitation.
In my mind, isolatedFromAbove is key to enabling sane multi-threading in MLIR and to represent the ubiquitous no-capture function-like abstraction.
Still, it seem to me this could be decoupled from pattern application.