| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|\ |
|
| |
| |
| |
| |
| |
| |
| | |
yieldThread hasn't been working for a while: unless we set the
context_switch flag to indicate that the current time slice is over,
the RTS scheduler just runs the same thread again. Spotted by Andreas
Voellmy (thanks!).
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
dependencies
There were really two bugs
a) When the fundep fires we must apply the matching
substitution to the kinds of the remaining type vars
(This happens in FunDeps.checkClsFD, when we create meta_tvs)
b) When instantiating the un-matched type variables we must
instantiate their kinds properly
(This happens in TcSMonad.instFlexiTcS)
This fixes #6068 and #6015 (second reported bug).
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
After the recent change that allows empty case alternatives, we
were accidentally saying that these two were equal:
Case x _ Int []
Case x _ Bool []
Usually if the alternatives are equal so is the result type -- but
not if the alternatives are empty!
There are two places to fix:
CoreUtils.eqExpr
TrieMap with CoreExpr key
Fixes #6096, #6097
|
| | | |
|
|\ \ \
| | |/
| |/| |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Previously, the `-no-user-package` and `-no-global-package` flags
affected the "initial" stack only, while `user-package` and
`global-packages` appended to the end of the stack.
This commit changes the behavior of those flags, so that they are always
applied to the stack as a whole.
The effect of the GHC_PACKAGE_PATH environment variable has also been
changed: terminating it with a separator now adds the default package
dbs (user and global) instead of the initial stack.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Rename package database flags in both GHC and ghc-pkg so that they are
consistent with Cabal nomenclature.
Add a version check to the build system so that the correct set of
package db flags are used when the bootstrapping GHC has version < 7.5.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Introduce new flags to allow any package database stack to be set up.
The `-no-user-package-conf` and `-no-global-package-conf` flags remove
the corresponding package db from the initial stack, while
`-user-package-conf` and `-global-package-conf` push it back on top of
the stack.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We were hitting a problem when reading the LANGUAGE/OPTIONS pragmas
from GHC.TypeLits, where the buffer ended "{-". The rules for the
start-comment lexeme check that "{-" is not followed by "#", but the
test returned False when there was no next character. Therefore we
were lexing this as as an open-curly lexeme (only consuming the "{",
and not reaching the end of the buffer),
which meant the options parser think that it had reached the end of
the options.
Now we correctly lex as "{-".
|
| |/
| |
| |
| | |
Surround a name in backticks when printing an infix declaration in GHCi.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When unifying two type variables we must unify their kinds.
The pure *matcher* was doing so, but the pure *unifier* was not.
This patch fixes Trac #6015, where an instance lookup was failing
when it should have succeeded.
I removed a bunch of code aimed at support sub-kinding. It's
tricky, ad-hoc, and I don't think its necessary any more.
Anything we can do to simplify the sub-kinding story is welcome!
|
| |\ |
|
| | |
| | |
| | |
| | | |
Fixes cgrun045(ghci) amongst others
|
| | | |
|
| | | |
|
| |/
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is really a small change, but it touches a lot of files quite
significantly. The real goal is to put the implicitly-bound kind
variables of a data/class decl in the right place, namely on the
LHsTyVarBndrs type, which now looks like
data LHsTyVarBndrs name
= HsQTvs { hsq_kvs :: [Name]
, hsq_tvs :: [LHsTyVarBndr name]
}
This little change made the type checker neater in a number of
ways, but it was fiddly to push through the changes.
|
| | |
|
| |\ |
|
| | |
| | |
| | |
| | | |
Fixes Trac #6078
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Put the result type in the Stop continuation
* No need for the alts type in Select
The result is a modest but useful simplification
|
| | |\ |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This turns out to be important becuase we don't have
a form for superclass selection in TcCoercion (we could
but we don't).
Se comments with xCtFlavor_cache, the Given case.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
This is kosher, and turns out to be vital when we have
more complicate evidence terms.
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is the result of Simon and Dimitrios doing a code walk through.
There is no change in behaviour, but the structure is much better.
Main changes:
* Given constraints contain an EvTerm not an EvVar
* Correspondingly, TcEvidence is a recursive types that uses
EvTerms rather than EvVars
* Rename CtFlavor to CtEvidence
* Every CtEvidence has a ctev_pred field. And use record fields
consistently for CtEvidence
* The solved-constraint fields of InertSet (namely inert_solved and
inert_solved_funeqs) contain CtEvidence, not Ct
There is a long cascade of follow-on changes.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* Undoes Max's very aggressive function-inlining change
(see comments with Trac #6048)
* Resticts function application discount to functions
that occur just once in the body. It was the multiple
occurrences that led to the exponential behavour in
Trac #6048.
See Note [Function application discount] in CoreUnfold.
Module binary sizes are down 2% on average, which is good.
Allocations wobble about a bit, but only on a few benchmarks
and not by much, so it seems a price worth paying to avoid
exponential behaviour!
Allocs
Min -1.2%
Max +2.8%
Geometric Mean +0.0%
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When inlining, we are making a copy of the expression, so we have to
be careful about duplicating work. Previously we were using
exprIsCheap for that, but it is willing to duplicate a cheap primop --
and that is terribly bad if it happens inside some inner array loop
(Trac #5623). So now we use a new function exprIsWorkFree. Even
then there is some wiggle room:
see Note [exprIsWorkFree] in CoreUtils
This commit does make wheel-sieve1 allocate a lot more, but we decided
that's just tough; it's more important for inlining to be robust
about not duplicating work.
|
| | | | |
|
| | | | |
|
| |/ /
|/| | |
|
|\ \ \ |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
|/ / /
| | |
| | |
| | | |
We get these in a full build on Win64
|
|\ \ \ |
|
| | | | |
|
| | | | |
|
|/ / / |
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
I'm not sure if we still need to encode the error, but validate is happy
with this fix, at least.
|