Changes between Version 24 and Version 25 of Commentary/Compiler/IntegratedCodeGen


Ignore:
Timestamp:
Aug 26, 2008 12:57:53 PM (6 years ago)
Author:
dias
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Compiler/IntegratedCodeGen

    v24 v25  
    3030our design are as follows: 
    3131 
    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. 
    3333  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. 
    3434 
     
    4747   optimizations to create an integrated "superoptimization" that is 
    4848   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)]. 
    5154 
    5255 * '''Coalescing register allocator:''' The back end can use fresh temporaries and register-register moves 
     
    5457   will eliminate almost all move instructions. 
    5558 
    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. 
    5760   In the long run, we wish to apply John Dias's dissertation work to GHC. 
    5861   In the short run, however, we