1. 24 Apr, 2015 3 commits
  2. 22 Apr, 2015 13 commits
  3. 21 Apr, 2015 7 commits
  4. 20 Apr, 2015 2 commits
    • Simon Peyton Jones's avatar
      Teach DmdAnal that coercions are value arguments! · d5773a49
      Simon Peyton Jones authored
      The demand analyser was treating coercion args like type args,
      which meant that the arguments in a strictness signature got
      out of step with the arguments of a call.  Result chaos and
      disaster.  Trac #10288 showed it up.
      
      It's hard to get this bug to show up in practice because
       - functions abstracted over coercions are usually abstracted
         over *boxed* coercions
       - we don't currently unbox a boxed-coercion arg because it's
         GADT (I see how to fix this too)
      
      But after floating, optimisation, and so on, Trac #10288 did
      get a function abstracted over an unboxed coercion, and then
      the -flate-dmd-anal pass went wrong.
      
      I don't think I can come up with a test case, but I don't think
      it matters too much.
      
      Still to come
       - Fix a second bug, namely that coercion variables are wrongly
         marked as absent because DmdAnal doesn't check the the free
         variables of casts. I think this never bites in practice
         (see the follow-up commit)
      
       - Make GADT products work with strictness analysis
      d5773a49
    • Herbert Valerio Riedel's avatar
      Update Cabal submodule to 1.22.3.0 release · 4bc925a6
      Herbert Valerio Riedel authored
      Highlights since 1.22.2.0:
      
      - cabal check will fail on -fprof-auto passed as a ghc-option
      - filterConfigureFlags: filter more flags.
      - fix ghcjs-pkg version number handling
      
      Addresses #10304
      4bc925a6
  5. 18 Apr, 2015 1 commit
  6. 17 Apr, 2015 5 commits
  7. 16 Apr, 2015 6 commits
  8. 15 Apr, 2015 2 commits
    • Joachim Breitner's avatar
      Improve Call Arity performance · a9ca67f6
      Joachim Breitner authored
      This improves how the Call Arity deals with "boring" variables. Boring
      variables are those where it does not bother to include in the analysis
      result, so whenever something is looked up in the analysis result, we
      have to make a conservative assumption about them.
      
      Previously, we extended the result with such conservative information
      about them, to keep the code uniform, but that could blow up the amount
      of data passed around, even if only temporarily, and slowed things down.
      
      We now pass around an explicit list (well, set) of variable that are
      boring and take that into account whenever we use the result. Not as
      pretty, but noticably faster.
      a9ca67f6
    • Simon Peyton Jones's avatar
      Fix fundep coverage-condition check for poly-kinds · 49d9b009
      Simon Peyton Jones authored
      See Note [Closing over kinds in coverage] in FunDeps.
      I'd already fixed this bug once, for Trac #8391, but I put the
      call to closeOverKinds in the wrong place, so Trac #10109
      failed.  (It checks the /liberal/ coverage condition, which
      
      The fix was easy: move the call to the right place!
      49d9b009
  9. 14 Apr, 2015 1 commit
    • Simon Peyton Jones's avatar
      Do not allow Typeable on constraints (Trac #9858) · 7b042d5a
      Simon Peyton Jones authored
      The astonishingly-ingenious trio of
      Shachaf Ben-Kiki, Ørjan Johansen and Nathan van Doorn
      managed to persuade GHC 7.10.1 to cough up unsafeCoerce.
      
      That is very bad. This patch fixes it by no allowing Typable
      on Constraint-kinded things.  And that seems right, since
      it is, in effect, a form of impredicative polymorphism,
      which Typeable definitely doesn't support.
      
      We may want to creep back in the direction of allowing
      Typeable on constraints one day, but this is a good
      fix for now, and closes a terrible hole.
      7b042d5a