Changes between Version 48 and Version 49 of Commentary/Compiler/HscMain
- Timestamp:
- 10/20/11 09:51:45 (19 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Commentary/Compiler/HscMain
v48 v49 22 22 23 23 24 * The '''!SimplCore''' pass ([[GhcFile(compiler/simplCore/SimplCore.lhs)]]) is a bunch of Core-to-Core passes that optimise the program; see [http://research.microsoft.com/%7Esimonpj/Papers/comp-by-trans-scp.ps.gz A transformation-based optimiser for Haskell (SCP'98)] for a more-or-less accurate overview. The main passes are:[[BR]][[BR]]24 * The '''!SimplCore''' pass ([[GhcFile(compiler/simplCore/SimplCore.lhs)]]) is a bunch of Core-to-Core passes that optimise the program; see [http://research.microsoft.com/%7Esimonpj/Papers/comp-by-trans-scp.ps.gz A transformation-based optimiser for Haskell (SCP'98)] for a more-or-less accurate overview. See [wiki:Commentary/Compiler/OptOrdering] for a summary of pass ordering constraints. The main passes are:[[BR]][[BR]] 25 25 * The '''Simplifier''', which applies lots of small, local optimisations to the program. The simplifier is big and complicated, because it implements a ''lot'' of transformations; and tries to make them cascade nicely. The transformation-based optimiser paper gives lots of details, but two other papers are particularly relevant: [http://research.microsoft.com/%7Esimonpj/Papers/inlining/index.htm Secrets of the Glasgow Haskell Compiler inliner (JFP'02)] and [http://research.microsoft.com/%7Esimonpj/Papers/rules.htm Playing by the rules: rewriting as a practical optimisation technique in GHC (Haskell workshop 2001)]. (`-ddump-simpl`)[[BR]][[BR]] 26 26 * The '''float-out''' and '''float-in''' transformations, which move let-bindings outwards and inwards respectively. See [http://research.microsoft.com/%7Esimonpj/papers/float.ps.gz Let-floating: moving bindings to give faster programs (ICFP '96)].[[BR]][[BR]]
