Record evaluated-ness on workers and wrappers
authorSimon Peyton Jones <simonpj@microsoft.com>
Fri, 13 Jan 2017 08:56:53 +0000 (08:56 +0000)
committerSimon Peyton Jones <simonpj@microsoft.com>
Fri, 13 Jan 2017 09:02:34 +0000 (09:02 +0000)
commit6b976eb89fe72827f226506d16d3721ba4e28bab
tree17a4a643f299c3b58e9fc70c1b263120ec022c22
parentf5f6d4237b87f5d0e3e0a05e4cfc52bb3c0e4ad9
Record evaluated-ness on workers and wrappers

In Trac #13027, comment:20, I noticed that wrappers created after
demand analysis weren't recording the evaluated-ness of strict
constructor arguments.  In the ticket that led to a (debatable)
Lint error but in general the more we know about evaluated-ness
the better we can optimise.

This commit adds that info both in the worker (on args) and in
the wrapper (on CPR result patterns).

See Note [Record evaluated-ness in worker/wrapper] in WwLib

On the way I defined Id.setCaseBndrEvald, and used it to shorten
the code in a few other places
compiler/basicTypes/Id.hs
compiler/coreSyn/CoreUtils.hs
compiler/simplCore/Simplify.hs
compiler/stranal/WwLib.hs