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

git at git.haskell.org git at git.haskell.org
Tue Feb 4 18:26:47 UTC 2014


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

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

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

commit 24fa001912799578d1a658e7d09343a0bd97e748
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.


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

24fa001912799578d1a658e7d09343a0bd97e748
 compiler/basicTypes/Demand.lhs                     |   67 ++++++++++++++++----
 compiler/basicTypes/MkId.lhs                       |    5 +-
 compiler/stranal/DmdAnal.lhs                       |   15 +++--
 .../tests/simplCore/should_compile/T7360.stderr    |    2 +-
 .../simplCore/should_compile/spec-inline.stderr    |    2 +-
 5 files changed, 70 insertions(+), 21 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 24fa001912799578d1a658e7d09343a0bd97e748


More information about the ghc-commits mailing list