[commit: ghc] wip/nested-cpr: Add Converges to DmdResult (112584f)

git at git.haskell.org git at git.haskell.org
Wed Jan 15 18:06:42 UTC 2014


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

On branch  : wip/nested-cpr
Link       : http://ghc.haskell.org/trac/ghc/changeset/112584f8dcdf0d8741206545f6dd727079f8645e/ghc

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

commit 112584f8dcdf0d8741206545f6dd727079f8645e
Author: Joachim Breitner <mail at joachim-breitner.de>
Date:   Thu Dec 12 15:45:19 2013 +0000

    Add Converges to DmdResult
    
    to detect definite convergence (required for nested CPR).
    
    Notable details:
     * botDmdType is no longer the unit for lubDmdType. So do not use foldr
       lubDmdType botDmdType when combinding the branches of a case, to
       avoid throwing away information.
     * avoid declaring recursive things as terminating for sure, by removing
       the Converges flag from a loop breaker.
     * cprProdSig comes with a Converging flag, so it is removed using
       sigMayDiverge where necessary
     * a data constructor worker is not converging, if it is strict in any
       of its fields.


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

112584f8dcdf0d8741206545f6dd727079f8645e
 compiler/basicTypes/Demand.lhs                     |   67 ++++++++++++++++----
 compiler/basicTypes/MkId.lhs                       |    5 +-
 compiler/stranal/DmdAnal.lhs                       |   15 +++--
 .../tests/simplCore/should_compile/T4918.stdout    |    4 +-
 .../tests/simplCore/should_compile/T7360.stderr    |    4 +-
 .../simplCore/should_compile/spec-inline.stderr    |    4 +-
 6 files changed, 74 insertions(+), 25 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 112584f8dcdf0d8741206545f6dd727079f8645e


More information about the ghc-commits mailing list