Skip to content

Simplifier: Try not to force all binds after each run

While I was looking for something else, I had a short look at #13426 (closed).

I was wondering why it is (was, after I created this issue) still open. The OP looks wildly outdated, with the module restructuring and all the refactorings that happened in the meantime, as well as @trac-rwbarton's fix for the Simplifier that left over one TODO identified by #13426 (comment 136120):

Reopening again, because we still have the Big Hamme

      | let sz = coreBindsSize binds
      , () <- sz `seq` ()     -- Force it

in SimplCore. Is this still necessary? Could we just remove it altogether?

And indeed, this strange seq has made it until today (grep for Force it, I found it in GHC.Core.Opt.Simplify:207). So it appears we force all bindings after each Simplifier run! A Big Hammer, indeed.

Proposal

Can we remove the Big Hammer without affecting residency as badly as reported in #13426 (closed)? Where is the space leak we are working around?

I don't think this is an important issue and I'm certainly not going to investigate, but it is a summary of the leftovers of #13426 (closed) with a Plow priority rather than Phigh.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information