• Ö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, thomie, carter
    
    GHC Trac Issues: #5889
    
    Differential Revision: https://phabricator.haskell.org/D4325
    
    (cherry picked from commit 59574058)
    583e392a
Coverage.hs 50.6 KB