On 7/4/2017 1:15 PM, Stefan Koch wrote:
Most arm implementation are not as forgiving as contemporary x86 processors when
it comes to bad register scheduling and the like.
The backend's scheduler is actually very effective. It mattered with the Pentium
and Pentium Pro processors, but not anymore. But the code is still there, and
still works, and the algorithm is sound.
https://github.com/dlang/dmd/blob/master/src/ddmd/backend/cgsched.c
The backend has also been accused of not doing data flow analysis. It does as
good a flow analysis as any compiler.
Where the backend has fallen behind are:
1. loop unrolling
2. better inlining
3. SROA
4. vectorization