/* * Perform a DFS starting at block `bid', storing the post-order in * `outVec'. */ void RegionDesc::postOrderSort(RegionDesc::BlockId bid, RegionDesc::BlockIdSet& visited, RegionDesc::BlockIdVec& outVec) { if (visited.count(bid)) return; visited.insert(bid); if (auto nextRetr = nextRetrans(bid)) { postOrderSort(nextRetr.value(), visited, outVec); } for (auto succ : succs(bid)) { postOrderSort(succ, visited, outVec); } outVec.push_back(bid); }