[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