summaryrefslogtreecommitdiff
path: root/compiler/GHC/Core/Unfold
diff options
context:
space:
mode:
authorSimon Peyton Jones <simon.peytonjones@gmail.com>2023-04-14 15:01:42 +0100
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-04-16 18:12:20 -0400
commit3b0ea4809d92581a10e0e501a6fbd7339e8922bf (patch)
treedfe012a352b49b89ab7be00afbea30a37343b28a /compiler/GHC/Core/Unfold
parentbad2f8b8aa84241e523577062e2b69090efccb32 (diff)
downloadhaskell-3b0ea4809d92581a10e0e501a6fbd7339e8922bf.tar.gz
Transfer DFunId_ness onto specialised bindings
Whether a binding is a DFunId or not has consequences for the `-fdicts-strict` flag, essentially if we are doing demand analysis for a DFunId then `-fdicts-strict` does not apply because the constraint solver can create recursive groups of dictionaries. In #22549 this was fixed for the "normal" case, see Note [Do not strictify the argument dictionaries of a dfun]. However the loop still existed if the DFunId was being specialised. The problem was that the specialiser would specialise a DFunId and turn it into a VanillaId and so the demand analyser didn't know to apply special treatment to the binding anymore and the whole recursive group was optimised to bottom. The solution is to transfer over the DFunId-ness of the binding in the specialiser so that the demand analyser knows not to apply the `-fstrict-dicts`. Fixes #22549
Diffstat (limited to 'compiler/GHC/Core/Unfold')
0 files changed, 0 insertions, 0 deletions