Changes between Version 24 and Version 25 of Commentary/Compiler/IntegratedCodeGen
- Timestamp:
- 08/26/08 05:57:53 (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Commentary/Compiler/IntegratedCodeGen
v24 v25 30 30 our design are as follows: 31 31 32 0. Build two big hammers, and hit as many nails as possible. (The big hammers are the '''dataflow optimization engine''' and a '''coalescing register allocator.''' ) The hammer itself may be big and complicated, but '''using a big hammer should be easy''' and should give easily predictable results.32 0. Build two big hammers, and hit as many nails as possible. (The big hammers are the '''dataflow optimization engine''' and a '''coalescing register allocator.''' For more on their uses, see our [wiki:Commentary/Compiler/IntegratedCodeGen#Designphilosophy design philosophy].) The hammer itself may be big and complicated, but '''using a big hammer should be easy''' and should give easily predictable results. 33 33 0. Load all back ends into every instance of the compiler, and '''treat every compilation as a cross-compilation.''' Despite having been used in production compilers for at least twenty years, this technique is still seen as somewhat unorthodox, but it removes many {{{#ifdef}}}s and saves significant complexity at compiler-configuration time. Removing {{{#ifdef}}}s also mitigates problems with validating the compiler under different build configurations. 34 34 … … 47 47 optimizations to create an integrated "superoptimization" that is 48 48 strictly more powerful than any sequence of individual optimizations, 49 no matter how many times they are re-run 50 [http://portal.acm.org/citation.cfm?id=503298 (Lerner, Grove, and Chambers 2002)]. 49 no matter how many times they are re-run. 50 The dataflow engine is based on 51 [http://citeseer.ist.psu.edu/old/lerner01composing.html (Lerner, Grove, and Chambers 2002)]; 52 you can find a functional implementation presented in 53 [http://www.cs.tufts.edu/~nr/pubs/zipcfg-abstract.html (Ramsey and Dias 2005)]. 51 54 52 55 * '''Coalescing register allocator:''' The back end can use fresh temporaries and register-register moves … … 54 57 will eliminate almost all move instructions. 55 58 56 * Our ultimate goal is to make adding a new back end easy as well.59 * '''Back ends:''' Our ultimate goal is to make adding a new back end easy as well. 57 60 In the long run, we wish to apply John Dias's dissertation work to GHC. 58 61 In the short run, however, we
