ยง Timings of passes in GHC, and low hanging fruit in the backend:

To quote AndreasK:
- Register allocation, common block elimination, block layout and pretty printing are the "slow" things in the backend as far as I remember. - There are also a handful of TODO's in the x86 codegen which still apply. So you can try to grep for these. - Strength reduction for division by a constant