Utility class computing a reverse post order of the
ControlFlowGraph.
The block order is special in that
blocks are processed before
blocks. This has the advantage that for
basic block frequency calculations nested loops are
processed before the outer loop exit blocks allowing a linear computation of loop frequencies.
Additionally, loops are guaranteed to be fully included in the RPO before any dominated sibling
loops are processed. This is necessary in order to attribute correct frequencies to loop exit
nodes of dominating sibling loops before processing any other code.