diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2021-05-04 23:41:48 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2021-05-06 22:36:09 +0100 |
commit | 9a050c7774c67cb3bfb72bbd0d609280564d14ec (patch) | |
tree | f8828adc3ef4404440378d4574bb126e46af8ffa /compiler/GHC/Settings | |
parent | 30f6923a834ccaca30c3622a0a82421fabcab119 (diff) | |
download | haskell-wip/T19780.tar.gz |
Fix strictness and arity info in SpecConstrwip/T19780
In GHC.Core.Opt.SpecConstr.spec_one we were giving join-points an
incorrect join-arity -- this was fallout from
commit c71b220491a6ae46924cc5011b80182bcc773a58
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date: Thu Apr 8 23:36:24 2021 +0100
Improvements in SpecConstr
* Allow under-saturated calls to specialise
See Note [SpecConstr call patterns]
This just allows a bit more specialisation to take place.
and showed up in #19780. I refactored the code to make the new
function calcSpecInfo which treats join points separately.
In doing this I discovered two other small bugs:
* In the Var case of argToPat we were treating UnkOcc as
uninteresting, but (by omission) NoOcc as interesting. As a
result we were generating SpecConstr specialisations for functions
with unused arguments. But the absence anlyser does that much
better; doing it here just generates more code. Easily fixed.
* The lifted/unlifted test in GHC.Core.Opt.WorkWrap.Utils.mkWorkerArgs
was back to front (#19794). Easily fixed.
* In the same function, mkWorkerArgs, we were adding an extra argument
nullary join points, which isn't necessary. I added a test for
this. That in turn meant I had to remove an ASSERT in
CoreToStg.mkStgRhs for nullary join points, which was always bogus
but now trips; I added a comment to explain.
Diffstat (limited to 'compiler/GHC/Settings')
0 files changed, 0 insertions, 0 deletions