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


Ignore:
Timestamp:
May 16, 2008 11:54:11 AM (6 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.