[commit: ghc] wip/12368: DmdAnal: Add a final, safe iteration (98da9fa)
git at git.haskell.org
git at git.haskell.org
Thu Aug 18 13:28:16 UTC 2016
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/12368
Link : http://ghc.haskell.org/trac/ghc/changeset/98da9faa633a7faa20c320a7eae8c3f8646c186f/ghc
>---------------------------------------------------------------
commit 98da9faa633a7faa20c320a7eae8c3f8646c186f
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Thu Jul 7 11:23:48 2016 +0200
DmdAnal: Add a final, safe iteration
this fixes #12368.
It also refactors dmdFix a bit, removes some redundancies (such as
passing around an strictness signature right next to an id, when that id
is guaranteed to have been annotated with that strictness signature).
Note that when fixed-point iteration does not terminate, we
conservatively delete their strictness signatures (set them to nopSig).
But this loses the information on how its strict free variables are
used!
Lazily used variables already escape via lazy_fvs. We ensure that in the
case of an aborted fixed-point iteration, also the strict variables are
put there (with a conservative demand of topDmd).
Differential Revision: https://phabricator.haskell.org/D2392
>---------------------------------------------------------------
98da9faa633a7faa20c320a7eae8c3f8646c186f
compiler/basicTypes/Demand.hs | 7 +-
compiler/basicTypes/VarEnv.hs | 5 +-
compiler/stranal/DmdAnal.hs | 188 ++++++++++++++++++-------------
compiler/utils/UniqFM.hs | 6 +
testsuite/tests/stranal/should_run/all.T | 3 +-
5 files changed, 128 insertions(+), 81 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 98da9faa633a7faa20c320a7eae8c3f8646c186f
More information about the ghc-commits
mailing list