[commit: ghc] master: Make demand analysis understand catch (9915b65)

git at git.haskell.org git at git.haskell.org
Thu Jan 7 08:36:44 UTC 2016


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/9915b6564403a6d17651e9969e9ea5d7d7e78e7f/ghc

>---------------------------------------------------------------

commit 9915b6564403a6d17651e9969e9ea5d7d7e78e7f
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date:   Wed Jan 6 17:40:09 2016 +0000

    Make demand analysis understand catch
    
    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


>---------------------------------------------------------------

9915b6564403a6d17651e9969e9ea5d7d7e78e7f
 compiler/basicTypes/Demand.hs                      | 870 ++++++++++++---------
 compiler/coreSyn/CoreArity.hs                      |   3 +-
 compiler/coreSyn/MkCore.hs                         |   7 +-
 compiler/prelude/primops.txt.pp                    |  47 +-
 compiler/stgSyn/CoreToStg.hs                       |   6 +-
 compiler/stranal/DmdAnal.hs                        |  14 +-
 compiler/stranal/WorkWrap.hs                       |   5 +-
 .../tests/deSugar/should_compile/T2431.stderr      |   2 +-
 .../tests/numeric/should_compile/T7116.stdout      |   8 +-
 .../tests/simplCore/should_compile/T3772.stdout    |   2 +-
 .../tests/simplCore/should_compile/T4930.stderr    |   4 +-
 .../simplCore/should_compile/spec-inline.stderr    |   2 +-
 testsuite/tests/stranal/sigs/HyperStrUse.stderr    |   2 +-
 testsuite/tests/stranal/sigs/T8598.stderr          |   2 +-
 testsuite/tests/stranal/sigs/UnsatFun.stderr       |   4 +-
 15 files changed, 550 insertions(+), 428 deletions(-)

Diff suppressed because of size. To see it, use:

    git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc 9915b6564403a6d17651e9969e9ea5d7d7e78e7f


More information about the ghc-commits mailing list