[commit: ghc] master: DmdAnal: Add a final, safe iteration (8d92b88)

git at git.haskell.org git at git.haskell.org
Thu Aug 25 16:25:15 UTC 2016


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

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/8d92b88df7c1c04606c8a9e12c1d4bee65c990e4/ghc

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

commit 8d92b88df7c1c04606c8a9e12c1d4bee65c990e4
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


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

8d92b88df7c1c04606c8a9e12c1d4bee65c990e4
 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 8d92b88df7c1c04606c8a9e12c1d4bee65c990e4


More information about the ghc-commits mailing list