[commit: ghc] wip/T11770: Demand Analyzer: Do not set OneShot information (second try) (bea5d1a)

git at git.haskell.org git at git.haskell.org
Wed Apr 6 09:26:34 UTC 2016


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

On branch  : wip/T11770
Link       : http://ghc.haskell.org/trac/ghc/changeset/bea5d1a2a2dcc27461b719a498cce094fbb94dae/ghc

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

commit bea5d1a2a2dcc27461b719a498cce094fbb94dae
Author: Joachim Breitner <mail at joachim-breitner.de>
Date:   Fri Apr 1 13:11:18 2016 +0200

    Demand Analyzer: Do not set OneShot information (second try)
    
    as suggested in ticket:11770#comment:1. This code was buggy
    (#11770), and the occurrence analyzer does the same job anyways.
    
    This also elaborates the notes in the occurrence analyzer accordingly.
    
    Previously, the worker/wrapper code would go through lengths to transfer
    the oneShot annotations from the original function to both the worker
    and the wrapper. We now simply transfer the demand on the worker, and
    let the subsequent occurrence analyzer push this onto the lambda
    binders.
    
    This also requires the occurrence analyzer to do this more reliably.
    Previously, it would not hand out OneShot annotatoins to things that
    would not `certainly_inline` (and it might not have mattered, as the
    Demand Analysis might have handed out the annotations). Now we hand out
    one-shot annotations unconditionally.
    
    Pushing this to a branch to see if the latest change fixes the
    performance problems.


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

bea5d1a2a2dcc27461b719a498cce094fbb94dae
 compiler/basicTypes/Demand.hs                | 22 +++++++-
 compiler/simplCore/OccurAnal.hs              | 42 ++++++++++-----
 compiler/specialise/SpecConstr.hs            |  2 +-
 compiler/stranal/DmdAnal.hs                  | 55 ++-----------------
 compiler/stranal/WorkWrap.hs                 | 32 +++++------
 compiler/stranal/WwLib.hs                    | 80 ++++++++--------------------
 testsuite/tests/stranal/should_compile/all.T |  2 +-
 7 files changed, 95 insertions(+), 140 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 bea5d1a2a2dcc27461b719a498cce094fbb94dae


More information about the ghc-commits mailing list