void natural_loop_dfs(jit::vector<Block*>& out, Visited& visited, Block* blk) { if (visited.test(blk->id())) return; visited.set(blk->id()); blk->forEachPred([&] (Block* pred) { natural_loop_dfs(out, visited, pred); }); out.push_back(blk); }