Seperate CPR analysis from the demand analyser
The reasons for that can be found in the wiki: https://gitlab.haskell.org/ghc/ghc/wikis/nested-cpr/split-off-cpr
We now run CPR after demand analysis (except for after the final demand
analysis run just before code gen). CPR got its own dump flags
(-ddump-cpr-anal
, -ddump-cpr-signatures
), but not its own flag to
activate/deactivate. It will run with -fstrictness
/-fworker-wrapper
.
As explained on the wiki page, this step is necessary for a sane Nested CPR analysis. And it has quite positive impact on compiler performance.
Here's a summary of NoFib results (And here is a more recent one that found that nothing changed in the meantime), throughout positive.