- Dec 12, 2013
-
-
This patch was authored by SPJ, and extracted from "Improve the handling of used-once stuff" by Joachim.
-
Joachim and I are committing this onto a branch so that we can share it, but we expect to do a bit more work before merging it onto head. Nofib staus: - Most programs, no change - A few improve - A couple get worse (cacheprof, tak, rfib) Investigating the "get worse" set is what's holding up putting this on head. The major issue is this. Consider map (f g) ys where f's demand signature looks like f :: <L,C1(C1(U))> -> <L,U> -> . So 'f' is not saturated. What demand do we place on g? Answer C(C1(U)) That is, the inner C1 should stay, even though f is not saturated. I found that this made a significant difference in the demand signatures inferred in GHC.IO, which uses lots of higher-order exception handlers. I also had to add used-once demand signatures for some of the 'catch' primops, so that we know their handlers are only called once.
-
This patch was authored by SPJ and extracted from "Improve the handling of used-once stuff" by Joachim.
-
This patch was authored by SPJ, and extracted from "Improve the handling of used-once stuff" by Joachim.
-
This is authored by SPJ, and split out out "Improve the handling of used-once stuff" by Joachim.
-
This was authored by SPJ and extracted from the "Improve the handling of used-once stuff" patch by Joachim.
-
- Dec 10, 2013
-
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
This is a long-standing bug. We were generating a Given equality between kind variables, and (at least until we support kind coercions) we can't do that. The fix is to drop such Given equalities entirely. That may mean we can't prove some things, but that's fair enough -- the current proof language can't express such proofs. See Note [Do not create Given kind equalities] in TcSMonad
-
- Dec 09, 2013
-
-
Joachim Breitner authored
-
Joachim Breitner authored
because it is not a top deman (see previous commit), and it is only used in an argument to mkStrictSig.
-
Joachim Breitner authored
because topDmdType is ''not'' the top of the lattice, as it puts an implicit absent demand on free variables, but Abs is the bottom of the Usage lattice. Why nopDmdType? Becuase it is the demand of doing nothing: Everything lazy, everything absent, no definite divergence.
-
Joachim Breitner authored
but do forget about certain divergence, if required. Fixes one part of ticket #8598. The added function (deferAfterIO) can maybe be merged with existing code, but given the ongoing work in the nested-cpr branch, I defer that work.
-
Joachim Breitner authored
The existing flag -ddump-stranal dumps the full Core, which is very verbose and not always helpful. This adds a more concise output (one line per top-level bind) that is faster to read, and especially more suitable to be used when writing test cases for the strictness analiser.
-
- Dec 05, 2013
-
-
parcs authored
-
parcs authored
The lexer now uses unicode single quotation marks in its error messages if possible. This is due to the use of the 'quotes' combinator.
-
Simon Peyton Jones authored
This was an egregious error. If e :: T (Q ty1) then when we have the splice $e :: ty2 we must ensure that ty1~ty2 before we even think about running the splice! I took the opportunity to remove the dead-code tcSpliceDecls altogether.
-
Simon Peyton Jones authored
- Dec 04, 2013
-
-
parcs authored
-
parcs authored
We now do the allocation of the blackhole indirection closure inside the RTS procedure 'newCAF' instead of generating the allocation code inline in the closure body of each CAF. This slightly decreases code size in modules with a lot of CAFs. As a result of this change, for example, the size of DynFlags.o drops by ~60KB and HsExpr.o by ~100KB.
-
Joachim Breitner authored
as it seems that this code is now dead (due to [Dropping derived constraints]) (See #8592)
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
-
Simon Peyton Jones authored
-
Joachim Breitner authored
-
Joachim Breitner authored
we now print the precise class method, with types, where the coercion failed.
-
- Dec 03, 2013
-
-
Edsko de Vries authored
-
Edsko de Vries authored
See #8006 for the reason why. This is not a fix as such; more of a workaround.
-
Joachim Breitner authored
If "deriving (C)" fails, it will now, if possible, indicate which particular field of which constructor has caused the failure. (This fixes #8576)
-
Joachim Breitner authored
When doing non-standalone deriving, annotate each individual unsimplified constraint with its own CtOrigin. This is just the refactoring, so the CtOrigin is still CtDeriv in each case.
-
- Dec 02, 2013
-
-
Gabor Greif authored
-
Joachim Breitner authored
This note is a summary of an explanation by SPJ to me.
-
Joachim Breitner authored
That’s where all its users are...
-
Richard Eisenberg authored
-
Richard Eisenberg authored
This commit is just a refactoring, intended to make the use of rejigConRes (which sorts out the return types of GADT-like constructors) less delicate. The idea is that, if we perform role checking in a second top-level pass, we can use checkValidDataCon to check for valid return types. Previously, checking roles would force the rejigConRes thunk before we knew that rejigConRes was safe to call!
-
Richard Eisenberg authored
-
Joachim Breitner authored
-
Joachim Breitner authored
-