bool FuncletLayout::runOnMachineFunction(MachineFunction &F) { DenseMap<const MachineBasicBlock *, int> FuncletMembership = getFuncletMembership(F); if (FuncletMembership.empty()) return false; F.sort([&](MachineBasicBlock &X, MachineBasicBlock &Y) { auto FuncletX = FuncletMembership.find(&X); auto FuncletY = FuncletMembership.find(&Y); assert(FuncletX != FuncletMembership.end()); assert(FuncletY != FuncletMembership.end()); return FuncletX->second < FuncletY->second; }); // Conservatively assume we changed something. return true; }