reversePostOrder property

List<BasicBlock> get reversePostOrder

Returns blocks in reverse postorder (useful for dataflow analysis).

Implementation

List<BasicBlock> get reversePostOrder {
  final visited = <BasicBlock>{};
  final result = <BasicBlock>[];

  void visit(BasicBlock block) {
    if (visited.contains(block)) return;
    visited.add(block);
    for (final succ in block.successors) {
      visit(succ);
    }
    result.add(block);
  }

  visit(entry);
  return result.reversed.toList();
}