Changes to ghc(2)

Changes to ghc:
commit ef44a429af4a630a153b5774d0e19dbcad8328d5
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Tue Mar 11 11:13:31 2014 +0000

    Make SetLevels do substitution properly (fixes Trac #8714)

    Nowadays SetLevels floats case expressions as well as let-bindings,
    and case expressions bind type variables.  We need to clone all such
    floated binders, to avoid accidental name capture.  But I'd forgotten
    to substitute for the cloned type variables, causing #8714.  (In the
    olden days only Ids were cloned, from let-bindings.)

    This patch fixes the bug and does quite a bit of clean-up refactoring
    as well, by putting the context level in the LvlEnv.

    There is no effect on performance, except that nofib 'rewrite' improves
    allocations by 3%.  On investigation I think it was a fluke to do with
    loop-cutting in big letrec nests.  But at least it's a fluke in the
    right direction.

            Program           Size    Allocs   Runtime   Elapsed  TotalMem
    --------------------------------------------------------------------------------
                Min          -0.4%     -3.0%    -19.4%    -19.4%    -26.7%
                Max          -0.0%     +0.0%    +17.9%    +17.9%      0.0%
     Geometric Mean          -0.1%     -0.0%     -0.7%     -0.7%     -0.4%

commit a10ed3e64336e272137e1743c36970b36f7076c7
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Thu Mar 6 11:54:33 2014 +0000

    Comments only