... | ... | @@ -83,7 +83,7 @@ The core of the Cmm pipeline is implemented by the `cpsTop` function in [compile |
|
|
|
|
|
>
|
|
|
>
|
|
|
> **This pass is optional.** It currently does not eliminate dead code in loops ([\#8327](https://gitlab.haskell.org//ghc/ghc/issues/8327)) and has some other minor deficiencies (eg. [\#8336](https://gitlab.haskell.org//ghc/ghc/issues/8336)).
|
|
|
> **This pass is optional.** It currently does not eliminate dead code in loops ([\#8327](https://gitlab.haskell.org/ghc/ghc/issues/8327)) and has some other minor deficiencies (eg. [\#8336](https://gitlab.haskell.org/ghc/ghc/issues/8336)).
|
|
|
>
|
|
|
>
|
|
|
|
... | ... | @@ -91,7 +91,7 @@ The core of the Cmm pipeline is implemented by the `cpsTop` function in [compile |
|
|
|
|
|
- **Proc-point analysis and splitting** (only when splitting proc-points), implemented by `procPointAnalysis` in `CmmProcPoint`, takes a list of proc-points and for each block and determines from which proc-point the block is reachable. This is implemented using Hoopl.
|
|
|
Then the call to `splitAtProcPoints` splits the Cmm graph into multiple Cmm graphs (each represents a single function) and build info tables to each of them.
|
|
|
When doing this we must be prepared for the fact that a proc-point does not actually exist in the graph since it was removed by stack layout pass (see [\#8205](https://gitlab.haskell.org//ghc/ghc/issues/8205)).
|
|
|
When doing this we must be prepared for the fact that a proc-point does not actually exist in the graph since it was removed by stack layout pass (see [\#8205](https://gitlab.haskell.org/ghc/ghc/issues/8205)).
|
|
|
|
|
|
- **Attach continuations' info tables** (only when NOT splitting proc-points), implemented by `attachContInfoTables` in `CmmProcPoint` attaches info tables for the continuations of calls in the graph. *\[PLEASE WRITE MORE IF YOU KNOW WHY THIS IS DONE\]*
|
|
|
|
... | ... | |