[Mlir-commits] [llvm] [mlir] [MLIR][Analysis] Consolidate topological sort utilities (PR #92563)
Tobias Gysi
llvmlistbot at llvm.org
Mon May 20 11:56:39 PDT 2024
================
@@ -146,3 +151,93 @@ bool mlir::computeTopologicalSorting(
return allOpsScheduled;
}
+
+SetVector<Block *> mlir::getBlocksSortedByDominance(Region ®ion) {
+ // For each block that has not been visited yet (i.e. that has no
+ // predecessors), add it to the list as well as its successors.
+ SetVector<Block *> blocks;
+ for (Block &b : region) {
+ if (blocks.count(&b) == 0) {
+ llvm::ReversePostOrderTraversal<Block *> traversal(&b);
+ blocks.insert(traversal.begin(), traversal.end());
+ }
+ }
+ assert(blocks.size() == region.getBlocks().size() &&
+ "some blocks are not sorted");
+
+ return blocks;
+}
+
+/// Computes the common ancestor region of all operations in `ops`. Remembers
----------------
gysit wrote:
```suggestion
/// Computes the closest common ancestor region of all operations in `ops`. Remembers
```
nit: maybe also say the function returns nullptr if no common region is found?
https://github.com/llvm/llvm-project/pull/92563
More information about the Mlir-commits
mailing list