Improvements to demand analysis

Authored by simonpj on Dec 12 2018, 11:22 AM.

Description

Improvements to demand analysis

This patch collects a few improvements triggered by Trac Trac #15696,
and fixing Trac Trac #16029

  • Stop making toCleanDmd behave specially for unlifted types. This special case was the cause of stupid behaviour in Trac Trac #16029. And to my joy I discovered the let/app invariant rendered it unnecessary. (Maybe the special case pre-dated the let/app invariant.)

    Result: less special-case handling in the compiler, and better perf for the compiled code.
  • In WwLib.mkWWstr_one, treat seqDmd like U(AAA). It was not being so treated before, which again led to stupid code.
  • Update and improve Notes

There are .stderr test wibbles because we get slightly different
strictness signatures for an argumment of unlifted type:

<L,U> rather than <S,U>        for Int#
<S,U> rather than <S(S),U(U)>  for Int

Details

Committed
simonpjDec 12 2018, 11:38 AM
Parents
rGHCded4a1db4d61: Typo fix, replace a foldl with foldl'
Branches
Unknown
Tags
Unknown