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. |

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. |