1. 03 Jun, 2016 2 commits
  2. 02 Jun, 2016 12 commits
  3. 31 May, 2016 3 commits
  4. 30 May, 2016 1 commit
  5. 28 May, 2016 1 commit
  6. 27 May, 2016 8 commits
    • thomie's avatar
      Testsuite: don't use --interactive in Makefiles · d40682ec
      thomie authored
      Add a linter to encourage the use of `$(TEST_HC_OPTS_INTERACTIVE)`
      instead of `$(TEST_HC_OPTS) --interactive -ignore-dot-ghci -v0`. It's
      too easy to forget one of those flags when adding a new test.
      
      Update submodule hpc.
      
      Reviewed by: austin
      
      Differential Revision: https://phabricator.haskell.org/D2265
      
      GHC Trac Issues: #11468
      d40682ec
    • Ryan Scott's avatar
      Clarify users' guide section on GeneralizedNewtypeDeriving · d0dd572b
      Ryan Scott authored
      Summary:
      It seemed to imply that GHC was generating infelicitous code when it
      actually wasn't. Fixes #12047.
      
      Reviewers: hvr, bgamari, austin
      
      Reviewed By: austin
      
      Subscribers: thomie, Iceland_jack
      
      Differential Revision: https://phabricator.haskell.org/D2273
      
      GHC Trac Issues: #12047
      d0dd572b
    • Gabor Greif's avatar
      Typos in comments · 3f20da1c
      Gabor Greif authored
      3f20da1c
    • Ömer Sinan Ağacan's avatar
      Do not init record accessors as exported · 3a00ff92
      Ömer Sinan Ağacan authored
      This was causing redundant code generation when accessors are not
      actually exported, as they were being marked as "exported" at
      initialization.
      
      Test Plan: validate
      
      Reviewers: simonpj, austin, bgamari
      
      Reviewed By: simonpj
      
      Subscribers: mpickering, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2270
      3a00ff92
    • Ömer Sinan Ağacan's avatar
      StgCmmExpr: Remove a redundant list · 59250dce
      Ömer Sinan Ağacan authored
      59250dce
    • Simon Peyton Jones's avatar
      Comments and white space only · 72fd407e
      Simon Peyton Jones authored
      72fd407e
    • Simon Peyton Jones's avatar
      More fixes for unboxed tuples · b43a7936
      Simon Peyton Jones authored
      This is a continuation of
         commit e9e61f18
         Date:   Thu May 26 15:24:53 2016 +0100
         Reduce special-casing for nullary unboxed tuple
      
      which related to Trac #12115.  But typecheck/should_run/tcrun051
      revealed that my patch was incomplete.
      
      This fixes it, by removing another special case in Type.repType.
      I had also missed a case in UnariseStg.unariseIdBinder.
      
      I took the opportunity to add explanatory notes
        Note [Unarisation]
        Note [Unarisation and nullary tuples]
      in UnariseStg
      b43a7936
    • Ömer Sinan Ağacan's avatar
      StgCmmCon: Do not generate moves from unused fields to local variables · cd50d236
      Ömer Sinan Ağacan authored
      Say we have a record like this:
      
          data Rec = Rec
            { f1 :: Int
            , f2 :: Int
            , f3 :: Int
            , f4 :: Int
            , f5 :: Int
            }
      
      Before this patch, the code generated for `f1` looked like this:
      
          f1_entry()
              {offset
                 ...
                 cJT:
                     _sI6::P64 = R1;
                     _sI7::P64 = P64[_sI6::P64 + 7];
                     _sI8::P64 = P64[_sI6::P64 + 15];
                     _sI9::P64 = P64[_sI6::P64 + 23];
                     _sIa::P64 = P64[_sI6::P64 + 31];
                     _sIb::P64 = P64[_sI6::P64 + 39];
                     R1 = _sI7::P64 & (-8);
                     Sp = Sp + 8;
                     call (I64[R1])(R1) args: 8, res: 0, upd: 8;
              }
      
      Note how all fields of the record are moved to local variables, even though
      they're never used. These moves make it to the final assembly:
      
          f1_info:
              ...
          _cJT:
              movq 7(%rbx),%rax
              movq 15(%rbx),%rcx
              movq 23(%rbx),%rcx
              movq 31(%rbx),%rcx
              movq 39(%rbx),%rbx
              movq %rax,%rbx
              andq $-8,%rbx
              addq $8,%rbp
              jmp *(%rbx)
      
      With this patch we stop generating these move instructions. Cmm becomes this:
      
          f1_entry()
              {offset
                 ...
                 cJT:
                     _sI6::P64 = R1;
                     _sI7::P64 = P64[_sI6::P64 + 7];
                     R1 = _sI7::P64 & (-8);
                     Sp = Sp + 8;
                     call (I64[R1])(R1) args: 8, res: 0, upd: 8;
              }
      
      Assembly becomes this:
      
          f1_info:
              ...
          _cJT:
              movq 7(%rbx),%rax
              movq %rax,%rbx
              andq $-8,%rbx
              addq $8,%rbp
              jmp *(%rbx)
      
      It turns out CmmSink already optimizes this, but it's better to generate
      better code in the first place.
      
      Reviewers: simonmar, simonpj, austin, bgamari
      
      Reviewed By: simonmar, simonpj
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2269
      cd50d236
  7. 26 May, 2016 4 commits
    • Ömer Sinan Ağacan's avatar
      Coverage.hs: Fix a duplication · 5b145c98
      Ömer Sinan Ağacan authored
      5b145c98
    • Ömer Sinan Ağacan's avatar
      StgCmmExpr: Fix a duplication · 5b8bec25
      Ömer Sinan Ağacan authored
      5b8bec25
    • Simon Peyton Jones's avatar
      Reduce special-casing for nullary unboxed tuple · e9e61f18
      Simon Peyton Jones authored
      When we built the kind of a nullary unboxed tuple, we said, in
      TysWiredIn.mk_tuple:
      
          res_rep | arity == 0 = voidRepDataConTy
                        -- See Note [Nullary unboxed tuple] in Type
                  | otherwise  = unboxedTupleRepDataConTy
      
      But this is bogus.  The Note deals with what the 'unarise' transformation
      does, and up to that point it's simpler and more uniform to treat
      nullary unboxed tuples the same as all the others.
      
      Nicer now.  And it fixes the Lint error in Trac #12115
      e9e61f18
    • Simon Peyton Jones's avatar
      Fix bytecode gen to deal with rep-polymorphism · 0f1e315b
      Simon Peyton Jones authored
      When faced runtime-rep-polymorphic code from a pattern-synonym
      matcher, the bytecode generator was treating the result as lifted,
      which it isn't.  The fix is just to treat those rep-polymorphic
      continuations like unlifted types, and add a dummy arg.
      
      Trac #12007 is a case in point.
      0f1e315b
  8. 25 May, 2016 7 commits
  9. 24 May, 2016 2 commits