Changes to ghc(4)

Changes to ghc:
commit 9026c77a07533bda3773c3c3f3df1c6592bc80c7
Author: Simon Marlow <marlowsd@gmail.com>
Date:   Fri Oct 25 11:19:49 2013 +0100

    comments

commit b724cd41a0aa1c650a48843efac42e85861eb9c6
Author: Simon Marlow <marlowsd@gmail.com>
Date:   Fri Oct 25 10:44:29 2013 +0100

    Turn several nats into StgWord to avoid potential integer overflow (#7762)

commit 36b042fbf60210ab6859d96e5b4b5e121085816d
Author: Simon Marlow <marlowsd@gmail.com>
Date:   Fri Oct 25 10:40:23 2013 +0100

    Make integer overflow less likely to happen (#7762)

    The particular problematic code in #7762 was this:

                nat newSize = size - n;
                char *freeAddr = MBLOCK_ROUND_DOWN(bd->start);
                freeAddr += newSize * MBLOCK_SIZE;
                            ^^^^^^^^^^^^^^^^^^^^^^  OVERFLOW!!!

    For good measure, I'm going to fix the bug twice.  This patch fixes
    the class of bugs of this kind, by making sure that any expressions
    involving BLOCK_SIZE or MBLOCK_SIZE are promoted to unsigned long.  In
    a separate patch, I'll fix a bunch of individual instances (including
    the one above).

commit 29be1a8afa6aece04ca85060662510a14d2ff8b0
Author: Simon Marlow <marlowsd@gmail.com>
Date:   Fri Oct 25 10:32:48 2013 +0100

    Discard dead assignments in tryToInline

    Inlining global registers and constants made code slightly larger in
    some cases.  I finally got around to looking into why, and discovered
    one reason: we weren't discarding dead code in some cases.  This patch
    fixes it.