[commit: ghc] ghc-8.0: Second attempt to fix sizeExpr (498009a)

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


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

On branch  : ghc-8.0
Link       : http://ghc.haskell.org/trac/ghc/changeset/498009a904a1e8910f9e0e527f6eb6c8073c8a76/ghc

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

commit 498009a904a1e8910f9e0e527f6eb6c8073c8a76
Author: Simon Marlow <marlowsd at gmail.com>
Date:   Fri Jun 17 11:21:52 2016 +0100

    Second attempt to fix sizeExpr
    
    Summary:
    Background:
    * sizeExpr was calculating expressions like ((e `cast` T) x) wrongly
    * Fixing it caused regressions in compile performance, and one nofib
      program (k-nucleotide)
    
    I managed to fix the source of the compiler regressions.  I think it was
    due to traceTc not being inlined, which I fixed in a more robust way by
    putting an export list on TcRnMonad.
    
    The k-nucleotide regression is more difficult.  I don't think anything
    is actually going wrong, but this program has been highly tuned and is
    quite sensitive to changing in inlining behaviour.  I managed to recover
    most of the performance by manual lambda-lifting which makes it a bit
    less fragile, but the end result was a bit slower.  I don't think this
    is disastrous, the program is pretty horrible to begin with and we could
    probably make a faster one by starting from scratch.
    
    Test Plan: validate, nofib
    
    Reviewers: simonpj, bgamari, niteria, austin, erikd
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D2338
    
    GHC Trac Issues: #11564
    
    (cherry picked from commit a47b62cb36853d03c77ef63b3208b3d869fb687e)


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

498009a904a1e8910f9e0e527f6eb6c8073c8a76
 compiler/coreSyn/CoreUnfold.hs  |  66 ++++++++++++++-------
 compiler/typecheck/TcRnMonad.hs | 127 +++++++++++++++++++++++++++++++++++++---
 2 files changed, 163 insertions(+), 30 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 498009a904a1e8910f9e0e527f6eb6c8073c8a76


More information about the ghc-commits mailing list