Collect CCs in CorePrep, including CCs in unfoldings
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
Showing
- compiler/coreSyn/CorePrep.hs 53 additions, 5 deletionscompiler/coreSyn/CorePrep.hs
- compiler/deSugar/Coverage.hs 1 addition, 8 deletionscompiler/deSugar/Coverage.hs
- compiler/ghc.cabal.in 0 additions, 1 deletioncompiler/ghc.cabal.in
- compiler/main/HscMain.hs 11 additions, 9 deletionscompiler/main/HscMain.hs
- compiler/profiling/CostCentre.hs 10 additions, 13 deletionscompiler/profiling/CostCentre.hs
- compiler/profiling/SCCfinal.hs 0 additions, 284 deletionscompiler/profiling/SCCfinal.hs
- compiler/simplStg/SimplStg.hs 12 additions, 35 deletionscompiler/simplStg/SimplStg.hs
- compiler/stgSyn/CoreToStg.hs 162 additions, 65 deletionscompiler/stgSyn/CoreToStg.hs
- testsuite/tests/profiling/should_compile/all.T 1 addition, 1 deletiontestsuite/tests/profiling/should_compile/all.T
- testsuite/tests/simplCore/should_compile/noinline01.stderr 8 additions, 8 deletionstestsuite/tests/simplCore/should_compile/noinline01.stderr
Loading
Please register or sign in to comment