diff options
author | Sebastian Graf <sebastian.graf@kit.edu> | 2021-05-14 12:24:48 +0200 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2021-06-03 16:24:36 -0400 |
commit | 1b5418b7a88989acdce5ebd15ee2d60572b51cf9 (patch) | |
tree | bb313d9cf97cf03698982ef034b0990c50a4eeb9 /rts/LibdwPool.c | |
parent | 1a700a4fbbc08703b04dc8edbcb16220dd839d97 (diff) | |
download | haskell-1b5418b7a88989acdce5ebd15ee2d60572b51cf9.tar.gz |
CPR: Detect constructed products in `runRW#` apps (#19822)
In #19822, we realised that the Simplifier's new habit of floating cases into
`runRW#` continuations inhibits CPR analysis from giving key functions of `text`
the CPR property, such as `singleton`.
This patch fixes that by anticipating part of !5667 (Nested CPR) to give
`runRW#` the proper CPR transformer it now deserves: Namely, `runRW# (\s -> e)`
should have the CPR property iff `e` has it.
The details are in `Note [Simplification of runRW#]` in GHC.CoreToStg.Prep.
The output of T18086 changed a bit: `panic` (which calls `runRW#`) now has
`botCpr`. As outlined in Note [Bottom CPR iff Dead-Ending Divergence], that's
OK.
Fixes #19822.
Metric Decrease:
T9872d
(cherry picked from commit b0df2f012ede2f9017577198b5285ca6015b582b)
Diffstat (limited to 'rts/LibdwPool.c')
0 files changed, 0 insertions, 0 deletions