This patch adds support for building a weak topological ordering (WTO) of the
CFG blocks, based on a limit flow graph constructed via (repeated) interval
partitioning of the CFG.
This patch is part 2 of 2 for adding WTO support.
Differential Revision: https://reviews.llvm.org/D153058
Adds support for the classic dataflow algorithm that partitions a flow graph
into distinct intervals. C.f. Dragon book, pp. 664-666.
A version of this algorithm exists in LLVM (see llvm/Analysis/Interval.h and
related files), but it is specific to LLVM, is a recursive (vs iterative)
algorithm, and uses many layers of abstraction that seem unnecessary for CFG
purposes.
This patch is part 1 of 2. The next patch will generalize the code to work on
intervals, to support computation of the limit flow graph.
Differential Revision: https://reviews.llvm.org/D152263