Safe Haskell | None |
---|---|
Language | Haskell2010 |
Sequentialise any remaining SOACs. It is very important that this is run *after* any access-pattern-related optimisation, because this pass will destroy information.
This pass conceptually contains three subpasses:
- Sequentialise
Stream
operations, leaving other SOACs intact. - Apply whole-program simplification.
- Sequentialise remaining SOACs.
This is because sequentialisation of streams creates many SOACs operating on single-element arrays, which can be efficiently simplified away, but only *before* they are turned into loops. In principle this pass could be split into multiple, but for now it is kept together.