1. 12 Nov, 2013 8 commits
    • Simon Peyton Jones's avatar
      1c17d00f
    • Simon Peyton Jones's avatar
    • Simon Peyton Jones's avatar
      961203b5
    • Simon Peyton Jones's avatar
      Improve eta expansion (again) · 802f4b89
      Simon Peyton Jones authored
      The presenting issue was that we were never eta-expanding
      
          f (\x -> case x of (a,b) -> \s -> blah)
      
      and that meant we were allocating two lambdas instead of one.
      See Note [Eta expanding lambdas] in SimplUtils.
      
      However I didn't want to eta expand the lambda, and then try all over
      again for tryEtaExpandRhs.  Yet the latter is important in the context
      of a let-binding it can do simple arity analysis.  So I ended up
      refactoring CallCtxt so that it tells when we are on the RHS of a let.
      
      I also moved findRhsArity from SimplUtils to CoreArity.
      
      Performance increases nicely. Here are the ones where allocation improved
      by more than 0.5%. Notice the nice decrease in binary size too.
      
      --------------------------------------------------------------------------------
              Program           Size    Allocs   Runtime   Elapsed  TotalMem
      --------------------------------------------------------------------------------
                 ansi          -2.3%     -0.9%      0.00      0.00     +0.0%
                 bspt          -2.1%     -9.7%      0.01      0.01    -33.3%
                fasta          -1.8%    -11.7%     -3.4%     -3.6%     +0.0%
                  fft          -1.9%     -1.3%      0.06      0.06    +11.1%
      reverse-complem          -1.9%    -18.1%     -1.9%     -2.8%     +0.0%
               sphere          -1.8%     -4.5%      0.09      0.09     +0.0%
            transform          -1.8%     -2.3%     -4.6%     -3.1%     +0.0%
      --------------------------------------------------------------------------------
                  Min          -3.0%    -18.1%    -13.9%    -14.6%    -35.7%
                  Max          -1.3%     +0.0%     +7.7%     +7.7%    +50.0%
       Geometric Mean          -1.9%     -0.6%     -2.1%     -2.1%     -0.2%
      802f4b89
    • Simon Peyton Jones's avatar
      Fix egregious omission in CSE (Trac #5996) · 0001d161
      Simon Peyton Jones authored
      This patch fixes a bad omission in CSE, thanks to 'michaelt' for spotting
      it, and correctly identifying the fix (in cseRhs).  The trouble was with
         x1 = C a b
         x2 = C x1 b
         y1 = C a b
         y2 = C y1 b
      we were not commoning up y2=x2, because we failed to substitute y1:=x1,
      so y2's RHS looked different to x2's
      
      I also refactoring, so taht the cs_map in a CSEnv map is
             cs_map    :: CoreMap (OutExpr, Id)
      instead of
             cs_map    :: CoreMap (OutExpr, OutExpr)
      Much nicer!
      
      This doesn't make much difference to allocation, but it gives a surprisingly
      big benefit to binary size.
      
      --------------------------------------------------------------------------------
              Program           Size    Allocs   Runtime   Elapsed  TotalMem
      --------------------------------------------------------------------------------
                 ansi          -1.7%     -0.8%      0.00      0.00     +0.0%
                 bspt          -1.6%     -1.5%      0.01      0.01     +0.0%
            cacheprof          -1.8%     -0.2%     +1.6%     +1.9%     +2.7%
                  fft          -1.4%     -1.3%      0.06      0.06    +11.1%
                  ida          -1.4%     -1.0%      0.12      0.12     +0.0%
                 rfib          -1.4%     -0.1%      0.03      0.03     +0.0%
                  scs          -1.6%     -0.1%     +1.5%     +1.5%     +0.0%
        spectral-norm          -1.3%     -0.1%     -0.2%     -0.2%     +0.0%
                  tak          -1.4%     -0.1%      0.02      0.02     +0.0%
              veritas          -1.4%     -0.1%      0.00      0.00     +0.0%
      --------------------------------------------------------------------------------
                  Min          -2.5%     -1.5%    -11.8%    -11.8%     -8.0%
                  Max          -1.0%     +0.0%     +2.7%     +2.5%    +11.1%
       Geometric Mean          -1.3%     -0.1%     -2.6%     -2.6%     +0.0%
      0001d161
    • Simon Peyton Jones's avatar
      Warn if you use ANN annotations with a stage-1 compiler (Trac #4268) · 6c1aba4f
      Simon Peyton Jones authored
      This makes us give a civilised warning when we hit an
        {-# ANN f foo #-}
      pragma in a stage-1 compiler.
      
      We decided that, since it's a pragma, it does not need a language
      extension flag to enable it.
      6c1aba4f
    • Simon Peyton Jones's avatar
    • Gabor Greif's avatar
      Typos in note · 95216e8f
      Gabor Greif authored
      95216e8f
  2. 08 Nov, 2013 2 commits
  3. 07 Nov, 2013 5 commits
  4. 06 Nov, 2013 12 commits
  5. 05 Nov, 2013 5 commits
  6. 04 Nov, 2013 4 commits
  7. 03 Nov, 2013 2 commits
  8. 02 Nov, 2013 2 commits