Changes between Version 22 and Version 23 of Commentary/Compiler/IntegratedCodeGen


Ignore:
Timestamp:
Aug 26, 2008 12:41:10 PM (7 years ago)
Author:
dias
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Compiler/IntegratedCodeGen

    v22 v23  
    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 rewriting 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.''')  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
     
    3939'''creating new clients is easy.''' 
    4040
    41  * We can define a new
     41 * '''Dataflow optimization:''' We can define a new
    4242   optimization simply by defining a lattice of dataflow facts (akin
    4343   to a specialized logic) and then writing the dataflow-transfer
     
    5050   [http://portal.acm.org/citation.cfm?id=503298 (Lerner, Grove, and Chambers 2002)].
    5151
    52  * The back end can use fresh temporaries and register-register moves
     52 * '''Coalescing register allocator:''' The back end can use fresh temporaries and register-register moves
    5353   with abandon, knowing that a state-of-the-art register allocator
    5454   will eliminate almost all move instructions.