SUnits in ScheduleDAGInstrs will be divided into several groups by their ctrl pred node number. Scheduler tries to build possible cluster edges inside each group. However, there're some units with no ctrl preds.
This patch
- Add these preds to each group before clusterNeighboringMemOps, to catch more cluster opportunities.
- Add a bitmap to mark units already clustered, remove them before clusterNeighboringMemOps
This impacts several test cases, by comparing scheduling log, we can find more cluster edges added and they are scheduled together.
This looks suspicious. Why has it stopped clustering the two loads from x0, and the two loads from x1?