Changes between Version 16 and Version 17 of Commentary/Compiler/NewCodeGen


Ignore:
Timestamp:
May 16, 2008 11:54:11 AM (7 years ago)
Author:
simonpj
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/Compiler/NewCodeGen

    v16 v17  
    7373
    7474 * '''Simple control flow optimisation''', implemented in `CmmContFlowOpt`:
    75    * Branch chain elimination
    76    * Remove unreachable blocks
    77    * TODO: block concatenation.  branch to K; and this is the only use of K.
    78    * Consider: block duplication.  branch to K; and K is a short block.  Branch chain elimination is just a special case of this.
    79    * TODO: Common block elimination (like CSE). This makes something else significantly simpler.  ('''!ToDo''': what?).
     75   * Branch chain elimination.
     76   * Remove unreachable blocks.
     77   * Block concatenation.  branch to K; and this is the only use of K. 
     78
     79   * Common block elimination (like CSE). This essentially implements the Adams optimisation, we believe.
     80   * Consider (sometime): block duplication.  branch to K; and K is a short block.  Branch chain elimination is just a special case of this.
    8081
    8182 * '''The Adams optimisation'''.  Given:
     
    9091  L : CopyIn retvals; <code>
    9192}}}
    92  ''and'' move `CopyOut` into L's other predecessors.  !ToDo: explain why this is a good thing.
     93 ''and'' move `CopyOut` into L's other predecessors.  !ToDo: explain why this is a good thing.  In fact Common Block Elimination does this, we think.
    9394
    94  * '''Proc-point analysis''' and '''transformation''', implemented in `CmmProcPointZ`.  (Adams version is `CmmProcPoint`.) The transfomation part adds a `CopyIn` to the front of each proc-point, which expresses the idea that proc-points use a standard entry convention.
     95 * '''Proc-point analysis''' and '''transformation''', implemented in `CmmProcPointZ`.  (Adams version is `CmmProcPoint`.) The transformation part adds a `CopyIn` to the front of each proc-point, which expresses the idea that proc-points use a standard entry convention.
     96    * The analysis produces a set of `BlockId` that should become proc-point
     97    * The transformation inserts a `CopyIn` at the start of each proc-point, and a `CopyOut` just before each branch to a proc-point.
    9598
    9699 * '''Add spill/reload''', implemented in `CmmSpillReload`, to spill live C-- variables before a call and reload them afterwards.  The middle node of the result is `Middle` (from `ZipCfgCmm` extended with `Spill` and `Reload` constructors.