https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110528
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
With selective scheduling on my reduced testcase:
```
Time variable usr sys wall
GGC
phase setup : 0.00 ( 0%) 0.01 ( 25%) 0.01 ( 0%)
1825k ( 51%)
phase parsing : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 0%)
174k ( 5%)
phase opt and generate : 4.03 (100%) 0.03 ( 75%) 4.05 ( 99%)
1563k ( 44%)
phase finalize : 0.00 ( 0%) 0.00 ( 0%) 0.02 ( 0%)
0 ( 0%)
callgraph functions expansion : 4.02 (100%) 0.03 ( 75%) 4.05 ( 99%)
1521k ( 43%)
callgraph ipa passes : 0.01 ( 0%) 0.00 ( 0%) 0.00 ( 0%)
29k ( 1%)
CFG verifier : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 0%)
0 ( 0%)
df use-def / def-use chains : 0.01 ( 0%) 0.00 ( 0%) 0.01 ( 0%)
0 ( 0%)
lexical analysis : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 0%)
0 ( 0%)
tree operand scan : 0.01 ( 0%) 0.00 ( 0%) 0.01 ( 0%)
5120 ( 0%)
tree CCP : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 0%)
224 ( 0%)
complete unrolling : 0.00 ( 0%) 0.01 ( 25%) 0.00 ( 0%)
482k ( 14%)
tree SSA verifier : 0.03 ( 1%) 0.00 ( 0%) 0.01 ( 0%)
0 ( 0%)
tree STMT verifier : 0.04 ( 1%) 0.00 ( 0%) 0.05 ( 1%)
0 ( 0%)
expand : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 0%)
467k ( 13%)
CSE : 0.01 ( 0%) 0.00 ( 0%) 0.00 ( 0%)
0 ( 0%)
integrated RA : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 0%)
24k ( 1%)
scheduling 2 : 3.91 ( 97%) 0.02 ( 50%) 3.92 ( 96%)
130k ( 4%)
verify RTL sharing : 0.02 ( 0%) 0.00 ( 0%) 0.01 ( 0%)
0 ( 0%)
TOTAL : 4.03 0.04 4.09
3564k
Extra diagnostic checks enabled; compiler may run slowly.
Configure with --enable-checking=release to disable checks.
```
Without:
```
Time variable usr sys wall
GGC
phase setup : 0.01 ( 7%) 0.00 ( 0%) 0.02 ( 11%)
1825k ( 49%)
phase opt and generate : 0.14 ( 93%) 0.00 ( 0%) 0.14 ( 78%)
1694k ( 46%)
phase finalize : 0.00 ( 0%) 0.00 ( 0%) 0.02 ( 11%)
0 ( 0%)
callgraph functions expansion : 0.13 ( 87%) 0.00 ( 0%) 0.14 ( 78%)
1652k ( 45%)
callgraph ipa passes : 0.01 ( 7%) 0.00 ( 0%) 0.00 ( 0%)
29k ( 1%)
cfg construction : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 6%)
0 ( 0%)
CFG verifier : 0.02 ( 13%) 0.00 ( 0%) 0.02 ( 11%)
0 ( 0%)
alias analysis : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 6%)
1640 ( 0%)
tree VRP : 0.01 ( 7%) 0.00 ( 0%) 0.00 ( 0%)
2160 ( 0%)
tree operand scan : 0.01 ( 7%) 0.00 ( 0%) 0.01 ( 6%)
5120 ( 0%)
tree DSE : 0.01 ( 7%) 0.00 ( 0%) 0.00 ( 0%)
0 ( 0%)
complete unrolling : 0.01 ( 7%) 0.00 ( 0%) 0.00 ( 0%)
482k ( 13%)
tree SSA verifier : 0.02 ( 13%) 0.00 ( 0%) 0.00 ( 0%)
0 ( 0%)
tree STMT verifier : 0.03 ( 20%) 0.00 ( 0%) 0.05 ( 28%)
0 ( 0%)
forward prop : 0.01 ( 7%) 0.00 ( 0%) 0.00 ( 0%)
0 ( 0%)
integrated RA : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 6%)
24k ( 1%)
reload CSE regs : 0.01 ( 7%) 0.00 ( 0%) 0.00 ( 0%)
48 ( 0%)
scheduling 2 : 0.01 ( 7%) 0.00 ( 0%) 0.01 ( 6%)
260k ( 7%)
initialize rtl : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 6%)
12k ( 0%)
rest of compilation : 0.00 ( 0%) 0.00 ( 0%) 0.01 ( 6%)
3496 ( 0%)
TOTAL : 0.15 0.00 0.18
3695k
Extra diagnostic checks enabled; compiler may run slowly.
Configure with --enable-checking=release to disable checks.
```
You can see selective scheduling is really bad.