fn maybe_loop_headers(body: &Body<'_>) -> DenseBitSet<BasicBlock>
Expand description
Compute the set of loop headers in the given body. A loop header is usually defined as a block which dominates one of its predecessors. This definition is only correct for reducible CFGs. However, computing dominators is expensive, so we approximate according to the post-order traversal order. A loop header for us is a block which is visited after its predecessor in post-order. This is ok as we mostly need a heuristic.