1. 06 Mar, 2014 2 commits
    • Simon Peyton Jones's avatar
      Make the demand on a binder compatible with type (fixes Trac #8569) · 4b355cd2
      Simon Peyton Jones authored
      Because of GADTs and casts we were getting binders whose
      demand annotation was more deeply nested than made sense
      for its type.
      See Note [Trimming a demand to a type], in Demand.lhs,
      which I reproduce here:
         Note [Trimming a demand to a type]
         Consider this:
           f :: a -> Bool
           f x = case ... of
                   A g1 -> case (x |> g1) of (p,q) -> ...
                   B    -> error "urk"
         where A,B are the constructors of a GADT.  We'll get a U(U,U) demand
         on x from the A branch, but that's a stupid demand for x itself, which
         has type 'a'. Indeed we get ASSERTs going off (notably in
         splitUseProdDmd, Trac #8569).
         Bottom line: we really don't want to have a binder whose demand is more
         deeply-nested than its type.  There are various ways to tackle this.
         When processing (x |> g1), we could "trim" the incoming demand U(U,U)
         to match x's type.  But I'm currently doing so just at the moment when
         we pin a demand on a binder, in DmdAnal.findBndrDmd.
    • Simon Peyton Jones's avatar
      Add some debug tracing · eeb1400a
      Simon Peyton Jones authored
  2. 05 Mar, 2014 2 commits
    • Gabor Greif's avatar
      Typos in comments · 2d828460
      Gabor Greif authored
    • Joachim Breitner's avatar
      Major Call Arity rework · cb8a63cb
      Joachim Breitner authored
      This patch improves the call arity analysis in various ways.
      Most importantly, it enriches the analysis result information so that
      when looking at a call, we do not have to make a random choice about
      what side we want to take the information from. Instead we can combine
      the results in a way that does not lose valuable information.
      To do so, besides the incoming arities, we store remember "what can be
      called with what", i.e. an undirected graph between the (interesting)
      free variables of an expression. Of course it makes combining the
      results a bit more tricky (especially mutual recursion), but still
      The actually implemation of the graph structure is abstractly put away
      in a module of its own (UnVarGraph.hs)
      The implementation is geared towards efficiently representing the graphs
      that we need (which can contain large complete and large complete
      bipartite graphs, which would be huge in other representations). If
      someone feels like designing data structures: There is surely some
      speed-up to be obtained by improving that data structure.
      Additionally, the analysis now takes into account that if a RHS stays a
      thunk, then its calls happen only once, even if the variables the RHS is
      bound to is evaluated multiple times, or is part of a recursive group.
  3. 04 Mar, 2014 1 commit
  4. 03 Mar, 2014 1 commit
  5. 01 Mar, 2014 2 commits
  6. 28 Feb, 2014 6 commits
  7. 27 Feb, 2014 3 commits
  8. 26 Feb, 2014 3 commits
    • Herbert Valerio Riedel's avatar
      Follow-up to 32f41c79 · b1ee32ed
      Herbert Valerio Riedel authored
      These parts were forgotten to be committed together with the rest of
      32f41c79Signed-off-by: Herbert Valerio Riedel's avatarHerbert Valerio Riedel <hvr@gnu.org>
    • Herbert Valerio Riedel's avatar
      Make distribution tarball compression format configurable · 32f41c79
      Herbert Valerio Riedel authored
      By default, bzip2 compression is selected (which is what has been used
      till now). Additionally, by setting the TAR_COMP make variable to one of
      the values "bzip2", "gzip", or "xz", an explicit compression format can
      be requested for the distribution tarballs. For instance, invoking
        make TAR_COMP=xz sdist-ghc
      will result in a tarball `./sdistprep/ghc-7.9.20140226-src.tar.xz`
      Signed-off-by: Herbert Valerio Riedel's avatarHerbert Valerio Riedel <hvr@gnu.org>
    • eir@cis.upenn.edu's avatar
      Fix #8807. · 98b6756b
      eir@cis.upenn.edu authored
      It turns out that the enhanced repPred function in DsMeta assumed
      that the head of any constraint would be a tycon. This assumption
      is false. Happily, the solution involved *deleting* code. I
      just removed repPred in favor of repTy, and added the HsEqTy case
      to repTy, where it should be anyway.
  9. 25 Feb, 2014 2 commits
  10. 24 Feb, 2014 2 commits
  11. 20 Feb, 2014 9 commits
  12. 19 Feb, 2014 7 commits