[commit: ghc] master: Implement late lambda lift (b2950e0)
git at git.haskell.org
git at git.haskell.org
Fri Nov 23 15:26:58 UTC 2018
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/b2950e03b551d82d62ec25eb232284aaf121b4e2/ghc
>---------------------------------------------------------------
commit b2950e03b551d82d62ec25eb232284aaf121b4e2
Author: Sebastian Graf <sebastian.graf at kit.edu>
Date: Fri Nov 23 16:24:18 2018 +0100
Implement late lambda lift
Summary:
This implements a selective lambda-lifting pass late in the STG
pipeline.
Lambda lifting has the effect of avoiding closure allocation at the cost
of having to make former free vars available at call sites, possibly
enlarging closures surrounding call sites in turn.
We identify beneficial cases by means of an analysis that estimates
closure growth.
There's a Wiki page at
https://ghc.haskell.org/trac/ghc/wiki/LateLamLift.
Reviewers: simonpj, bgamari, simonmar
Reviewed By: simonpj
Subscribers: rwbarton, carter
GHC Trac Issues: #9476
Differential Revision: https://phabricator.haskell.org/D5224
>---------------------------------------------------------------
b2950e03b551d82d62ec25eb232284aaf121b4e2
compiler/basicTypes/Demand.hs | 16 +-
compiler/basicTypes/Id.hs | 3 +-
compiler/codeGen/StgCmm.hs | 4 +-
compiler/codeGen/StgCmmBind.hs | 7 +-
compiler/codeGen/StgCmmExpr.hs | 4 +-
compiler/ghc.cabal.in | 5 +
compiler/main/DynFlags.hs | 26 ++
compiler/simplStg/SimplStg.hs | 117 +++--
compiler/simplStg/StgCse.hs | 8 +-
compiler/simplStg/StgLiftLams.hs | 102 +++++
compiler/simplStg/StgLiftLams/Analysis.hs | 566 ++++++++++++++++++++++++
compiler/simplStg/StgLiftLams/LiftM.hs | 349 +++++++++++++++
compiler/simplStg/StgLiftLams/Transformation.hs | 155 +++++++
compiler/simplStg/StgStats.hs | 4 +-
compiler/simplStg/UnariseStg.hs | 8 +-
compiler/stgSyn/CoreToStg.hs | 4 +-
compiler/stgSyn/StgFVs.hs | 51 ++-
compiler/stgSyn/StgLint.hs | 39 +-
compiler/stgSyn/StgSubst.hs | 80 ++++
compiler/stgSyn/StgSyn.hs | 104 +++--
docs/users_guide/using-optimisation.rst | 52 +++
inplace/test | 3 -
inplace/test spaces | 1 -
testsuite/tests/perf/join_points/all.T | 2 +-
24 files changed, 1565 insertions(+), 145 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 b2950e03b551d82d62ec25eb232284aaf121b4e2
More information about the ghc-commits
mailing list