the attached patch changes the 'Interval' class so that it's possible to
build hierarchy of intervals, with first-order intervals composed of basic
blocks, second-order interface composed of first-order intervals and so on.
The paper I read on intervals specifically talks about interval hierarchy,
and I indeed exploit hierarchy in some algorithm of mine.
The patch is pretty large, so there might be some bugs, but on the other the
interval class is not used anywhere in LLVM, as far as I know.
Intervals.diff (33.9 KB)