• Ömer Sinan Ağacan's avatar
    Collect CCs in CorePrep, including CCs in unfoldings · 583e392a
    Ömer Sinan Ağacan authored
    This patch includes two changes:
    1. Move cost centre collection from `SCCfinal` to `CorePrep`, to be able
       to collect cost centres in unfoldings. `CorePrep` drops unfoldings, so
       that's the latest stage in the compilation pipeline for this.
       After this change `SCCfinal` no longer collects all cost centres, but
       it still generates & collects CAF cost centres + updates cost centre
       stacks of `StgRhsClosure` and `StgRhsCon`s.
       This fixes #5889.
    2. Initialize cost centre stack fields of `StgRhs` in `coreToStg`. With
       this we no longer need to update cost centre stack fields in
       `SCCfinal`, so that module is removed.
       Cost centre initialization explained in Note [Cost-centre
       initialization plan].
       Because with -fcaf-all we need to attach a new cost-centre to each
       CAF, `coreTopBindToStg` now returns `CollectedCCs`.
    Test Plan: validate
    Reviewers: simonpj, bgamari, simonmar
    Reviewed By: simonpj, bgamari
    Subscribers: rwbarton,...
CorePrep.hs 63.2 KB