[commit: ghc] ghc-7.10: Zap usage info in CSE (Trac #10218) (5c10c69)

git at git.haskell.org git at git.haskell.org
Tue Apr 14 12:49:36 UTC 2015


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

On branch  : ghc-7.10
Link       : http://ghc.haskell.org/trac/ghc/changeset/5c10c69849c8029db5b5e7ee540df308d8941957/ghc

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

commit 5c10c69849c8029db5b5e7ee540df308d8941957
Author: Simon Peyton Jones <simonpj at microsoft.com>
Date:   Tue Apr 14 09:20:42 2015 +0100

    Zap usage info in CSE (Trac #10218)
    
    Trac #10218 reports a subtle bug that turned out to be:
    
    - CSE invalidated the usage information computed
      by earlier demand analysis, by increasing sharing
    
    - that made a single-entry thunk into a multi-entry thunk
    
    - and with -feager-blackholing, that led to <<loop>>
    
    The patch fixes it by making the CSE pass zap usage information for
    let-bound identifiers.   It can be restored by -flate-dmd-anal.
    
    (But making -flate-dmd-anal the default needs some careful work;
    see Trac #7782.)
    
    (cherry picked from commit d261d4cbcc867405f71d7c9580628f52978e2267)


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

5c10c69849c8029db5b5e7ee540df308d8941957
 compiler/basicTypes/Demand.hs                      | 33 +++++++++++++-------
 compiler/basicTypes/Id.hs                          | 10 +++++--
 compiler/basicTypes/IdInfo.hs                      |  8 +++--
 compiler/simplCore/CSE.hs                          | 35 ++++++++++++++--------
 compiler/simplCore/SetLevels.hs                    |  2 +-
 compiler/stranal/DmdAnal.hs                        |  4 +--
 .../tests/simplCore/should_compile/EvalTest.hs     |  2 +-
 testsuite/tests/stranal/should_run/T10218.hs       | 18 +++++++++++
 .../should_run/T10218.stdout}                      |  1 -
 testsuite/tests/stranal/should_run/all.T           |  1 +
 10 files changed, 82 insertions(+), 32 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 5c10c69849c8029db5b5e7ee540df308d8941957


More information about the ghc-commits mailing list