Changes to ghc(5)

Changes to ghc:
commit 79e46aea1643b4dfdc7c846bbefe06b83b535efd
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Thu Apr 24 08:43:07 2014 +0100

    Don't eta-expand PAPs (fixes Trac #9020)

    See Note [Do not eta-expand PAPs] in SimplUtils.  This has a tremendously
    good effect on compile times for some simple benchmarks.

    The test is now where it belongs, in perf/compiler/T9020 (instead of simpl015).

    I did a nofib run and got essentially zero change except for cacheprof which
    gets 4% more allocation.  I investigated.  Turns out that we have

        instance PP Reg where
           pp ppm ST_0 = "%st"
           pp ppm ST_1 = "%st(1)"
           pp ppm ST_2 = "%st(2)"
           pp ppm ST_3 = "%st(3)"
           pp ppm ST_4 = "%st(4)"
           pp ppm ST_5 = "%st(5)"
           pp ppm ST_6 = "%st(6)"
           pp ppm ST_7 = "%st(7)"
           pp ppm r    = "%" ++ map toLower (show r)

    That (map toLower (show r) does a lot of map/toLowers.  But if we inline show
    we get something like

           pp ppm ST_0 = "%st"
           pp ppm ST_1 = "%st(1)"
           pp ppm ST_2 = "%st(2)"
           pp ppm ST_3 = "%st(3)"
           pp ppm ST_4 = "%st(4)"
           pp ppm ST_5 = "%st(5)"
           pp ppm ST_6 = "%st(6)"
           pp ppm ST_7 = "%st(7)"
           pp ppm EAX  = map toLower (show EAX)
           pp ppm EBX  = map toLower (show EBX)
           ...etc...

    and all those map/toLower calls can now be floated to top level.
    This gives a 4% decrease in allocation.  But it depends on inlining
    a pretty big 'show' function.

    With this new patch we get slightly better eta-expansion, which makes
    a function look slightly bigger, which just stops it being inlined.
    The previous behaviour was luck, so I'm not going to worry about
    losing it.

    I've added some notes to nofib/Simon-nofib-notes

commit 134b722349b83c746f8f52f2dbd99b89d23b644c
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Tue Apr 22 17:17:31 2014 +0100

    Be less verbose when printing Names when we don't know what's in scope

    Previously we always printed qualified names, but that makes a lot of debug or
    warning output very verbose. So now we only print qualified names with -dppr-debug.

    Civilised output (from pukka error messages, with the environment available) is
    unaffected

commit 68a1e679f0b97db99c552c3dbf69e651291826fa
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Tue Apr 22 14:40:12 2014 +0100

    Make absolutely sure that 'done' and 'safeIndex' are strict in the index

    This is just to make sure that there is no redundant boxing.
    For safeIndex, for example, the error path doesn't evaluate the
    index, so it may be passed boxed unless safeIndex is inlined bodily,
    which I don't want to rely on.

commit 98aab76a5498b003635fd78188b7c1e3623c73d5
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Tue Apr 22 14:37:22 2014 +0100

    Be sure to UNPACK the size of an array

    The code before did actually unpack the size, I think, but it
    wasn't very clear, and it's better to do it explicitly

commit 31a7bb463b6a3e99ede6de994c1f449c43a9118c
Author: Simon Peyton Jones <simonpj@microsoft.com>
Date:   Thu Apr 24 08:36:40 2014 +0100

    Add comments to explain the change to EF_ (Trac #8965)