> Gcc only does this work in the second pass, but what's the
> point? Is it wrong or just not necessary in the first sched
> pass?
Regardless of the target architecture from the correctness point of view sched1
can be disabled. sched1 has as purpose shortening live ranges.
Short live ranges allow the register allocation to:
1. generate less spills and
2. also to avoid useless live ranges splitting.
The second point impacts the register renaming phase which allows sched2 phase
to extract more ilp.