summaryrefslogtreecommitdiff
path: root/compiler
Commit message (Collapse)AuthorAgeFilesLines
...
* | | Merge branch 'master' of http://darcs.haskell.org/ghcSimon Peyton Jones2012-04-202-16/+22
|\ \ \
| * \ \ Merge branch 'master' of http://darcs.haskell.org/ghcSimon Peyton Jones2012-04-2035-1052/+1115
| |\ \ \
| * | | | Fix worker/wrapper for CPR functionsSimon Peyton Jones2012-04-132-16/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A long-standing and egregious bug in the worker/wrapper code meant that some functions with the CPR property weren't getting a CPR w/w. And that had the effect of making a tail-recursive function not tail recursive. As well as increasing allocation. Fixes Trac #5920, and #5997. Nofib results (highlights): Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- boyer2 -0.1% -15.3% 0.01 0.01 +0.0% mandel2 -0.0% -8.1% 0.01 0.01 +0.0% para -0.1% -11.8% -7.9% -7.8% +0.0% -------------------------------------------------------------------------------- Min -0.1% -15.3% -7.9% -7.8% -33.3% Max +0.0% +0.2% +6.3% +6.3% +3.7% Geometric Mean -0.0% -0.4% +0.1% +0.1% -0.5% Looks like a clear win. And I have not even recompiled the libraries, so it'll probably be a bit better in the ed.
* | | | | Move free-var info from InstDecl to FamInstDeclSimon Peyton Jones2012-04-207-52/+63
| | | | |
* | | | | Merge branch 'master' of http://darcs.haskell.org/ghcSimon Peyton Jones2012-04-2035-961/+1024
|\ \ \ \ \ | | |/ / / | |/| | |
| * | | | Merge branch 'master' of http://darcs.haskell.org//ghcSimon Peyton Jones2012-04-207-391/+359
| |\ \ \ \
| | * | | | Adding -ddump-avoid-vect option for vectorisation avoidance diagnosticsManuel M T Chakravarty2012-04-201-0/+2
| | | | | |
| | * | | | Add newline to the end of fileJose Pedro Magalhaes2012-04-192-2/+4
| | | |_|/ | | |/| |
| | * | | Fix operand expansion function.Paolo Capriotti2012-04-161-57/+48
| | | | |
| | * | | Implemented word-sized addressing of pointers and literals.Paolo Capriotti2012-04-162-34/+29
| | | | |
| | * | | Bytecode assembler refactoring.Paolo Capriotti2012-04-162-331/+278
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use a free monad to specify the assembling procedure, so that it can be run multiple times without producing side effects. This paves the way for a more general implementation of variable-sized instructions, since we need to dry-run the bytecode assembler to determine the size of the operands for some instructions.
| | * | | Export State monad transformer from ByteCodeItbls.Paolo Capriotti2012-04-161-6/+15
| | | | |
| | * | | Support large SLIDE instructions.Paolo Capriotti2012-04-161-44/+66
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The bytecode generator used to keep track of the stack depth with a 16-bit counter, which could overflow for very large BCOs, resulting in incorrect bytecode. This commit switches to a word-sized counter, and eagerly panics whenever an operand is too big, instead of truncating the result. This allows us to work around the 16-bit limitation in the case of SLIDE instructions, since we can simply factor it into multiple SLIDEs with smaller arguments.
| * | | | Do SCC on instance declarations (fixes Trac #5715)Simon Peyton Jones2012-04-2016-103/+193
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The trouble here is that given {-# LANGUAGE DataKinds, TypeFamilies #-} data instance Foo a = Bar (Bar a) we want to get a sensible message that we can't use the promoted 'Bar' constructor until after its definition; it's a staging error. Bud the staging mechanism that we use for vanilla data declarations don't work here. Solution is to perform strongly-connected component analysis on the instance declarations. But that in turn means that we need to track free-variable information on more HsSyn declarations, which is why so many files are touched. All the changes are boiler-platey except the ones in TcInstDcls.
| * | | | Simplify the typechecking of RULESSimon Peyton Jones2012-04-164-228/+179
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not only does this fix Trac #5853, but it also eliminate the horrid SimplEqsOnly part of the constraint simplifier. The new plan is described in TcRules Note [Simplifying RULE constraints]
| * | | | Simplify construction of equality predicatesSimon Peyton Jones2012-04-163-15/+12
| | | | | | | | | | | | | | | | | | | | | | | | | There was an ASSERT which does not hold during type checking (and should not) which is later checked by Core Lint
| * | | | Merge branch 'master' of http://darcs.haskell.org//ghcSimon Peyton Jones2012-04-1315-245/+425
| |\ \ \ \ | | |/ / /
| * | | | Allow kind-variable binders in type signaturesSimon Peyton Jones2012-04-1313-226/+283
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the last major addition to the kind-polymorphism story, by allowing (Trac #5938) type family F a -- F :: forall k. k -> * data T a -- T :: forall k. k -> * type instance F (T (a :: Maybe k)) = Char The new thing is the explicit 'k' in the type signature on 'a', which itself is inside a type pattern for F. Main changes are: * HsTypes.HsBSig now has a *pair* (kvs, tvs) of binders, the kind variables and the type variables * extractHsTyRdrTyVars returns a pair (kvs, tvs) and the function itself has moved from RdrHsSyn to RnTypes * Quite a bit of fiddling with TcHsType.tcHsPatSigType and tcPatSig which have become a bit simpler. I'm still not satisfied though. There's some consequential fiddling in TcRules too. * Removed the unused HsUtils.collectSigTysFromPats There's a consequential wibble to Haddock too
* | | | | Comments onlySimon Peyton Jones2012-04-201-3/+11
| | | | |
* | | | | Allow overlaps when -XIncoherentInstances is in forceSimon Peyton Jones2012-04-131-8/+10
| |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | This change allows a top-level instance to be used even if there is a (potentially) overlapping local given. Which isn't fab, but it is what IncoherentInstances is *for*. This fixes the bug part of Trac #6002.
* | | | Untabify HsTypesSimon Peyton Jones2012-04-131-91/+91
| | | |
* | | | Revert "Added ':runmonad' command to GHCi"Simon Peyton Jones2012-04-138-198/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Two problems, for now at any rate a) Breaks the build with lots of errors like No instance for (Show (IO ())) arising from a use of `print' b) Discussion of the approache hasn't converged yet (Simon M had a number of suggestions) This reverts commit eecd7c98c1f079c14d99ed831dff33a48ee45e67.
* | | | Added ':runmonad' command to GHCiDavid Terei2012-04-128-119/+198
| |/ / |/| | | | | | | | | | | | | | | | | | | | | | | This command allows you to lift user stmts in GHCi into an IO monad that implements the GHC.GHCi.GHCiSandboxIO type class. This allows for easy sandboxing of GHCi using :runmonad and Safe Haskell. Longer term it would be nice to allow a more general model for the Monad than GHCiSandboxIO but delaying this for the moment.
* | | Allow threads in GHCi to receive BlockedIndefintely* exceptions (#2786)Simon Marlow2012-04-122-11/+48
| | | | | | | | | | | | | | | | | | This is a partial fix for #2786. It seems we still don't get NonTermination exceptions for interpreted computations, but we do now get the BlockedIndefinitely family.
* | | Fix instance signature error message (#6001)Paolo Capriotti2012-04-121-1/+1
| | | | | | | | | | | | Display class method signature instead of user-provided signature.
* | | Fix a race condition in the GHCi debugger exposed by testcase break011.Paolo Capriotti2012-04-111-0/+5
| | |
* | | Add support for additional .ghci files in GHCi (#5265)Paolo Capriotti2012-04-111-1/+6
| | | | | | | | | | | | Patch by Sam Anklesaria <amsay@amsay.net>
* | | Revert "trac #5265 (support for additional .ghci files)"Paolo Capriotti2012-04-111-10/+1
| | | | | | | | | | | | This reverts commit 991f141989940c897cb2fc3dba7b5b49342d402a.
* | | fix quadratic performance issue with long module names (#5981)Simon Marlow2012-04-111-11/+15
| | |
* | | Setting empty touchable range in implications that are generated from polytypeDimitrios.Vytiniotis2012-04-101-3/+3
| | | | | | | | | | | | decomposition in the constraint solver.
* | | Updates to the constraint solver to be able to handle implicationDimitrios.Vytiniotis2012-04-105-93/+226
| | | | | | | | | | | | | | | constraint generation during solveInteractCts, needed for polytype equality decomposition. More commentary to follow.
* | | Update names to match the implementation in GHC.TypeLits.Iavor S. Diatchki2012-04-083-27/+29
| | |
* | | Allow promoted constructors in the typedoc production (#5948)Paolo Capriotti2012-04-061-0/+3
|/ /
* | Merge branch 'master' of http://darcs.haskell.org/ghcDimitrios.Vytiniotis2012-04-055-30/+33
|\ \
| * \ Merge branch 'master' of http://darcs.haskell.org/ghcSimon Peyton Jones2012-04-0524-1747/+1943
| |\ \
| * | | Fix Trac #5952, by changing the Outputable TyCon instance,Simon Peyton Jones2012-04-055-30/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | so that it does not print a quote in front of a promoted TyCon in a Kind. I also systematically renamed PromotedTypeTyCon --> PromotedTyCon PromotedDataTyCon --> PromotedDataCon
* | | | Improved caching: I was flushing the solved when going under implications,Dimitrios.Vytiniotis2012-04-052-23/+31
| | | | | | | | | | | | | | | | this was the reason for the regression of T3064.
* | | | Implemeting a lookup modulo non-idempotent substitution.Dimitrios.Vytiniotis2012-04-051-17/+21
| |/ / |/| |
* | | Merge branch 'master' of http://darcs.haskell.org//ghcSimon Peyton Jones2012-04-0538-2051/+2442
|\ \ \
| * \ \ Merge branch 'master' of http://darcs.haskell.org/ghc into ghc-new-flavorDimitrios.Vytiniotis2012-04-059-144/+195
| |\ \ \
| | * | | --amendDavid Terei2012-04-041-9/+9
| | | | |
| | * | | Fix GHC API with respect to safe haskell. (#5989)David Terei2012-04-047-123/+155
| | | | | | | | | | | | | | | | | | | | | | | | | This fixes haddock so it correctly reports the safe haskell mode of a module.
| | * | | Update safe haskell error/warn formattingDavid Terei2012-04-041-15/+11
| | | | |
| | * | | Fix tracking of reason safe inference failed. (#5988)David Terei2012-04-043-24/+46
| | | | |
| | * | | Fix uneeded test in safe haskell codeDavid Terei2012-04-041-1/+2
| | |/ /
| * | | Merge branch 'master' of http://darcs.haskell.org/ghc into ghc-new-flavorDimitrios.Vytiniotis2012-04-042-39/+65
| |\ \ \ | | |/ /
| | * | Merge branch 'master' of http://darcs.haskell.org/ghcSimon Peyton Jones2012-04-0411-231/+384
| | |\ \
| | * | | Tighten up on type validity checkingSimon Peyton Jones2012-04-042-39/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes Trac #5957, which pointed out that Int -> Ord a => a -> a is not Haskell 98
| * | | | Merge branch 'master' of http://darcs.haskell.org/ghc into ghc-new-flavorDimitrios.Vytiniotis2012-04-047-29/+106
| |\ \ \ \ | | | |/ / | | |/| |
| | * | | Update comments about Addr in foreign declarations.Paolo Capriotti2012-04-042-10/+7
| | | | |