summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Update expected test outputs to match new format of pretty-printingwip/T8776Dr. ERDI Gergo2014-03-195-53/+52
| | | | interface contents
* isLexVarSym: check all characters of the name, not just the first one.Dr. ERDI Gergo2014-03-191-6/+19
| | | | | This is so that generated names like e.g. workers don't show up as infix operators when using something like -ddump-simpl.
* Add test case for #8776Dr. ERDI Gergo2014-03-194-0/+11
|
* Reinstate pretty-printing of AnIds via pprId (#8776)Dr. ERDI Gergo2014-03-141-0/+6
|
* Use prefix notation in pprIfaceDecl for IfaceIdsDr. ERDI Gergo2014-03-141-1/+1
|
* Honor Op_PrintExplicitForalls setting in pprIfaceForAllPartDr. ERDI Gergo2014-03-141-2/+7
|
* Pretty-print the following TyThings via their IfaceDecl counterpart:Dr. ERDI Gergo2014-03-133-48/+23
| | | | | | * AnId * ACoAxiom * AConLike
* pprIfaceDecl for IfacePatSyn: use pprPatSynSigDr. ERDI Gergo2014-03-131-15/+11
|
* pprIfaceContextArr: print a context including the "=>" arrowDr. ERDI Gergo2014-03-132-9/+9
|
* Add OutputableBndr instance for OccNameDr. ERDI Gergo2014-03-121-0/+5
|
* Add perf test for inline array allocationJohan Tibell2014-03-112-0/+22
|
* Validate computed sums in inline array allocation testJohan Tibell2014-03-111-1/+4
|
* Add test for inline array allocationJohan Tibell2014-03-113-0/+89
|
* Fix incorrect loop condition in inline array allocationJohan Tibell2014-03-113-8/+12
| | | | | Also make sure allocHeapClosure updates profiling counters with the memory allocated.
* Refactor inline array allocationSimon Marlow2014-03-115-108/+120
| | | | | | | | | | - Move array representation knowledge into SMRep - Separate out low-level heap-object allocation so that we can reuse it from doNewArrayOp - remove card-table initialisation, we can safely ignore the card table for newly allocated arrays.
* Represent offsets into heap objects with byte, not word, offsetsSimon Marlow2014-03-117-36/+58
| | | | | I'd like to be able to pack together non-pointer fields that are less than a word in size, and this is a necessary prerequisite.
* codeGen: allocate small arrays of statically known size inlineJohan Tibell2014-03-111-38/+159
| | | | | | | | | | This results in a 46% runtime decrease when allocating an array of 16 unit elements on a 64-bit machine. In order to allow newArray# to have both an inline and an out-of-line implementation, cgOpApp is refactored slightly. The new implementation of cgOpApp should make it easier to add other primops with both inline and out-of-line implementations in the future.
* Fix last-minute typo in SetLevels commit ef44a4Simon Peyton Jones2014-03-111-1/+2
| | | | Sorry about that...
* Make SetLevels do substitution properly (fixes Trac #8714)Simon Peyton Jones2014-03-115-334/+323
| | | | | | | | | | | | | | | | | | | | | | Nowadays SetLevels floats case expressions as well as let-bindings, and case expressions bind type variables. We need to clone all such floated binders, to avoid accidental name capture. But I'd forgotten to substitute for the cloned type variables, causing #8714. (In the olden days only Ids were cloned, from let-bindings.) This patch fixes the bug and does quite a bit of clean-up refactoring as well, by putting the context level in the LvlEnv. There is no effect on performance, except that nofib 'rewrite' improves allocations by 3%. On investigation I think it was a fluke to do with loop-cutting in big letrec nests. But at least it's a fluke in the right direction. Program Size Allocs Runtime Elapsed TotalMem -------------------------------------------------------------------------------- Min -0.4% -3.0% -19.4% -19.4% -26.7% Max -0.0% +0.0% +17.9% +17.9% 0.0% Geometric Mean -0.1% -0.0% -0.7% -0.7% -0.4%
* Comments onlySimon Peyton Jones2014-03-111-6/+6
|
* Fix copy-paste error in build system commentJohan Tibell2014-03-101-2/+2
|
* Add "bench" build flavour to build systemJohan Tibell2014-03-101-0/+64
| | | | | | | This build generates the same code as the "perf" build and is thus good for compiling benchmarks and inspecting the generated code. However, it compiles the stage2 compiler faster at the expense of compiler user programs more slowly.
* Unify, rather than match, in GND processing (fixes Trac #8865)Simon Peyton Jones2014-03-105-27/+60
| | | | | Yet another small way in which polymorphic kinds needs a bit of care See Note [Unify kinds in deriving] in TcDeriv
* Improve documentation of standalone deriving (c.f. Trac #8851)Simon Peyton Jones2014-03-101-7/+21
|
* Also allow http://github.com (#8824)Joachim Breitner2014-03-081-1/+1
|
* Test Trac #8856Simon Peyton Jones2014-03-072-0/+7
|
* Fix the treatment of lexically scoped kind variables (Trac #8856)Simon Peyton Jones2014-03-0710-113/+110
| | | | | | | | | | The issue here is described in Note [Binding scoped type variables] in TcPat. When implementing this fix I was able to make things quite a bit simpler: * The type variables in a type signature now never unify with each other, and so can be straightfoward skolems. * We only need the SigTv stuff for signatures in patterns, and for kind variables.
* Make -XDeriveFunctor more generous about non-last arguments (Trac #8678)Simon Peyton Jones2014-03-079-31/+97
| | | | | | | | When deriving Functor, Foldable, Traversable, we need only look at the way that the last type argument is treated. It's fine for there to be existentials etc, provided they don't affect the last type argument. See Note [Check that the type variable is truly universal] in TcDeriv.
* Make sync-all handle all github protocols correctlyJoachim Breitner2014-03-071-3/+5
| | | | This fixes #8824.
* Run testcase for 8124 only with threaded waysJoachim Breitner2014-03-071-1/+1
|
* Test #8851.Richard Eisenberg2014-03-072-1/+26
|
* Trac #8569 fixedSimon Peyton Jones2014-03-061-1/+1
|
* Test for Trac #8841 now worksSimon Peyton Jones2014-03-061-1/+1
|
* Attach the right location to pattern synonym error message (fixes Trac #8841)Simon Peyton Jones2014-03-061-5/+4
|
* Make the demand on a binder compatible with type (fixes Trac #8569)Simon Peyton Jones2014-03-063-36/+127
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Add some debug tracingSimon Peyton Jones2014-03-061-15/+18
|
* Typos in commentsGabor Greif2014-03-052-2/+2
|
* Major Call Arity reworkJoachim Breitner2014-03-057-309/+593
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 doable. 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.
* Update `Cabal` to 1.18.1.3 releaseHerbert Valerio Riedel2014-03-041-0/+0
| | | | Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
* Update time to 1.4.2 releaseHerbert Valerio Riedel2014-03-031-0/+0
| | | | | | Note: The only visible change in `time-1.4.2` is at the SafeHaskell level Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
* fix copy/pastoSimon Marlow2014-03-011-1/+1
|
* add missing files (#8124)Simon Marlow2014-03-012-0/+48
|
* binary-dist: when using xz, use extreme compression.Austin Seipp2014-02-281-1/+1
| | | | | | | | | | | | When building a binary distribution with TAR_COMP=xz, using the -9e flag (extremely high compression) results in substantial savings: for the Mavericks builds, bzip2 scores in at about 120mb, while xz at level 9 scores about 60mb - a huge reduction! This of course takes significantly longer - but it does not affect decompression speed for end users, so it's certainly worth it. Signed-off-by: Austin Seipp <austin@well-typed.com>
* Note that we need Cabal-1.18 in the release notesAustin Seipp2014-02-281-0/+6
| | | | | | Thanks to George Colpitts for helping us remember this! Signed-off-by: Austin Seipp <austin@well-typed.com>
* Fix binary-dist target with xz/gzipAustin Seipp2014-02-281-1/+1
| | | | | | | This was harmless but annoying: we forgot to take the compression extention into account when copying the binary dist out of bindistprep Signed-off-by: Austin Seipp <austin@well-typed.com>
* Documentation updates for 7.8.1 releaseAustin Seipp2014-02-282-23/+37
| | | | | | | Notably, GND is now usable with Safe Haskell. Also, Coercible now is in Data.Coerce canonically, and we added some more instances. Signed-off-by: Austin Seipp <austin@well-typed.com>
* Bump T6048 tests.Austin Seipp2014-02-281-0/+1
| | | | | | | | It seems as though my changes in base to add instances for Monoid/Applicative had some slight impact on the allocations in this test... Signed-off-by: Austin Seipp <austin@well-typed.com>
* PPC: Fix loads of PIC data with > 16 bit offsets (#7830).Erik de Castro Lopo2014-02-281-2/+3
| | | | Loads should now handle up to 32 bit offsets.
* Add hs_thread_done() (#8124)Simon Marlow2014-02-279-11/+137
| | | | See documentation for details.
* fix comment on allocate() (#8254)Simon Marlow2014-02-271-12/+14
|