1. 18 Feb, 2014 2 commits
    • Simon Peyton Jones's avatar
      Allow ($) to return an unlifted type (Trac #8739) · 5dd1cbbf
      Simon Peyton Jones authored
      Since ($) simply returns its result, via a tail call, it can
      perfectly well have an unlifted result type; e.g.
          foo $ True    where  foo :: Bool -> Int#
      should be perfectly fine.
      
      This used to work in GHC 7.2, but caused a Lint failure.  This patch
      makes it work again (which involved removing code in TcExpr), but fixing
      the Lint failure meant I had to make ($) into a wired-in Id.  Which
      is not hard to do (in MkId).
      5dd1cbbf
    • Simon Peyton Jones's avatar
      Use NoGen plan for unboxed-tuple bindings · 47f473b0
      Simon Peyton Jones authored
      There was a small mixup here, exposed by Trac #8762.
      Now clarified with better function names and comments.
      47f473b0
  2. 17 Feb, 2014 13 commits
  3. 13 Feb, 2014 8 commits
  4. 11 Feb, 2014 8 commits
  5. 10 Feb, 2014 5 commits
    • Joachim Breitner's avatar
      Note [Eta expansion in match] · a4450ece
      Joachim Breitner authored
      a4450ece
    • Joachim Breitner's avatar
      Update test cases due to call arity · 393ea739
      Joachim Breitner authored
      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.
      393ea739
    • Joachim Breitner's avatar
      Add a unit test for CallArity · 9bc82656
      Joachim Breitner authored
      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.
      9bc82656
    • Joachim Breitner's avatar
      Implement CallArity analysis · cdceadf3
      Joachim Breitner authored
      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").
      cdceadf3
    • eir@cis.upenn.edu's avatar
      8e303d72
  6. 09 Feb, 2014 4 commits