The GCC “-fschedule-insns” option allows for reordering of instructions to eliminate execution stalls when required data is unavailable. This early scheduling option can be beneficial for systems with slow floating point performance or costly memory load instructions. With the upcoming GCC 15 release, AArch64 will be enabling this early scheduling optimization at the -O3 optimization level and higher.
The early scheduling option had been disabled at all optimization levels on AArch64 (and x86) since it can be costly in terms of compile-time overhead. But with the upcoming GCC 15.1 release, this early scheduling is now being enabled for -O3 and higher (-Ofast).
The commit making the change on Thursday explained:
“AArch64: Enable early scheduling for -O3 and higher
Enable the early scheduler on AArch64 for O3/Ofast. This means GCC15 benefits from much faster build times with -O2, but avoids the regressions in lbm which is very sensitive to minor scheduling changes due to long FMA chains.”
The change to the GNU Compiler Collection was made by longtime Arm engineer Wilco Dijkstra.
The GCC 15 stable compiler release should be out within the next month or two.