• Simon Peyton Jones's avatar
    Make demand analysis understand catch · 9915b656
    Simon Peyton Jones authored
    As Trac #11222, and #10712 note, the strictness analyser
    needs to be rather careful about exceptions.  Previously
    it treated them as identical to divergence, but that
    won't quite do.
    
    See Note [Exceptions and strictness] in Demand, which
    explains the deal.
    
    Getting more strictness in 'catch' and friends is a
    very good thing.  Here is the nofib summary, keeping
    only the big ones.
    
    --------------------------------------------------------------------------------
            Program           Size    Allocs   Runtime   Elapsed  TotalMem
    --------------------------------------------------------------------------------
              fasta          -0.1%     -6.9%     -3.0%     -3.0%     +0.0%
                hpg          -0.1%     -2.0%     -6.2%     -6.2%     +0.0%
           maillist          -0.1%     -0.3%      0.08      0.09     +1.2%
    reverse-complem          -0.1%    -10.9%     -6.0%     -5.9%     +0.0%
             sphere          -0.1%     -4.3%      0.08      0.08     +0.0%
               x2n1          -0.1%     -0.0%      0.00      0.00     +0.0%
    --------------------------------------------------------------------------------
                Min          -0.2%    -10.9%    -17.4%    -17.3%     +0.0%
                Max          -0.0%     +0.0%     +4.3%     +4.4%     +1.2%
     Geometric Mean          -0.1%     -0.3%     -2.9%     -3.0%     +0.0%
    
    On the way I did quite a bit of refactoring in Demand.hs
    9915b656
Demand.hs 74.2 KB