Figure out what LLVM passes are fruitful
Builds using GHC's LLVM backend are currently substantially slower than GHC's own native code generator. There are a few possible reasons for this,
- the cost of forking processes and serializing/parsing LLVM's intermediate representation
- the cost of the more powerful optimizations responsible for LLVM's (hopefully) better code generation
- the cost of redundant optimizations overlapping effort already expended by GHC
Given that some architecture (e.g. ARM) are only supported by LLVM and therefore suffer considerably at the hand of our slow builds, we should try to reduce 3.
Edited by Moritz Angermann