diff options
author | Andreas Klebinger <klebinger.andreas@gmx.at> | 2022-06-27 17:46:30 +0200 |
---|---|---|
committer | Andreas Klebinger <klebinger.andreas@gmx.at> | 2022-06-30 15:59:21 +0200 |
commit | 53b9c4566bcb4439fca6d4b545a9e6fba5c09e0c (patch) | |
tree | 863f3924656adfa8dc02e9940a0ba3da0bd1dbb1 /testsuite/tests/stranal/sigs/DmdAnalGADTs.stderr | |
parent | d3d3d508b5a599634678c9e2cd4b1e6cc9e8ca72 (diff) | |
download | haskell-wip/andreask/othercon_94.tar.gz |
Don't mark lambda binders as OtherConwip/andreask/othercon_94
We used to put OtherCon unfoldings on lambda binders of workers
and sometimes also join points/specializations with with the
assumption that since the wrapper would force these arguments
once we execute the RHS they would indeed be in WHNF.
This was wrong for reasons detailed in #21472. So now we purge
evaluated unfoldings from *all* lambda binders.
This fixes #21472, but at the cost of sometimes not using as efficient a
calling convention. It can also change inlining behaviour as some
occurances will no longer look like value arguments when they did
before.
As consequence we also change how we compute CBV information for
arguments slightly. We now *always* determine the CBV convention
for arguments during tidy. Earlier in the pipeline we merely mark
functions as candidates for having their arguments treated as CBV.
As before the process is described in the relevant notes:
Note [CBV Function Ids]
Note [Attaching CBV Marks to ids]
Note [Never put `OtherCon` unfoldigns on lambda binders]
(cherry picked from commit ac7a7fc88b51f9fb4e84499397e12eb0081ba79e)
-------------------------
Metric Decrease:
T12425
T13035
T18223
T18223
T18923
MultiLayerModulesTH_OneShot
Metric Increase:
T18223
WWRec
-------------------------
Diffstat (limited to 'testsuite/tests/stranal/sigs/DmdAnalGADTs.stderr')
0 files changed, 0 insertions, 0 deletions