Changes to ghc(3) base(2)

Changes to ghc:
commit 393ea739567206d848f53e9ca75f532a49218694
Author: Joachim Breitner <mail@joachim-breitner.de>
Date:   Mon Feb 10 11:13:19 2014 +0000

    Update test cases due to call arity

    Some nice improvements on already succeeding test cases (#876, #7954
    and #4267)

    Test #149 needed a little change, lest call arity causes a allocation
    change that we do not want to test here.

commit 9bc826569ec2ae9bfd1e3bd882fcb406da8f26b3
Author: Joachim Breitner <mail@joachim-breitner.de>
Date:   Wed Jan 29 12:19:35 2014 +0000

    Add a unit test for CallArity

    This also sets precedence for testing internals of GHC directly, i.e.
    without trying to come up with Haskell code and observable effects.
    Let's see how that goes.

    I put all the tests (including those where the analysis could do better)
    in one file because starting the GHC API is quite slow.

commit cdceadf365335fdee5ffa8e6364f7fb00bc4b0f7
Author: Joachim Breitner <mail@joachim-breitner.de>
Date:   Tue Jan 28 10:15:00 2014 +0000

    Implement CallArity analysis

    This analysis finds out if a let-bound expression with lower manifest
    arity than type arity is always called with more arguments, as in that
    case eta-expansion is allowed and often viable. The analysis is very
    much tailored towards the code generated when foldl is implemented via
    foldr; without this analysis doing so would be a very bad idea!

    There are other ways to improve foldr/builder-fusion to cope with foldl,
    if any of these are implemented then this step can probably be moved to
    -O2 to save some compilation times. The current impact of adding this
    phase is just below +2% (measured running GHC's "make").

Changes to base:
commit 4651b6a5508b796dac9c5c6d061176f0e561a273
Author: Joachim Breitner <breitner@kit.edu>
Date:   Wed Jan 29 17:29:53 2014 +0100

    Inline maximum/minium a bit more aggresively

    in order to allow fusion of the foldr in the foldl in the foldl' therein.

commit b63facef165b957183b65604ef99b2b8574747a5
Author: Joachim Breitner <mail@joachim-breitner.de>
Date:   Tue Jan 28 14:31:05 2014 +0100

    Implement foldl with foldr

    together with the call arity analysis and the following patch (about inlining
    maximum), we get nice benefits from fusing foldl and foldl' with good
    producers:

                    Min          -0.1%    -74.5%     -6.8%     -8.3%    -50.0%
                    Max          +0.2%      0.0%    +38.5%    +38.5%      0.0%
         Geometric Mean          -0.0%     -4.1%     +7.7%     +7.7%     -0.8%

    Because this depends on a compiler optimisation, we have to watch out for cases
    where this is not an improvements, and whether they occur in the wild.