- 05 Jun, 2008 4 commits
-
-
simonpj@microsoft.com authored
-
simonpj@microsoft.com authored
-
simonpj@microsoft.com authored
Occasionally people write very large recursive groups of definitions. In general we desugar these to a single definition that binds tuple, plus lots of tuple selectors. But that code has quadratic size, which can be bad. This patch adds a new case to the desugaring of bindings, for the situation where there are lots of polymorphic variables, but no dictionaries. (Dictionaries force us into the general case.) See Note [Abstracting over tyvars only]. The extra behaviour can be disabled with the (static) flag -fno-ds-multi-tyvar in case we want to experiment with switching it on or off. There is essentially-zero effect on the nofib suite though. I was provoked into doing this by Trac #1136. In fact I'm not sure it's the real cause of the problem there, but it's a good idea anyway.
-
simonpj@microsoft.com authored
This patch adds to Core the ability to say let a = Int in <body> where 'a' is a type variable. That is: a type-let. See Note [Type let] in CoreSyn. * The binding is always non-recursive * The simplifier immediately eliminates it by substitution So in effect a type-let is just a delayed substitution. This is convenient in a couple of places in the desugarer, one existing (see the call to CoreTyn.mkTyBind in DsUtils), and one that's in the next upcoming patch. The first use in the desugarer was previously encoded as (/\a. <body>) Int rather that eagerly substituting, but that was horrid because Core Lint had do "know" that a=Int inside <body> else it would bleat. Expressing it directly as a 'let' seems much nicer.
-
- 04 Jun, 2008 9 commits
-
-
simonpj@microsoft.com authored
-
simonpj@microsoft.com authored
We have not supported "result type signatures" for some time, but using one in the wrong way caused a crash. This patch tidies it up.
-
simonpj@microsoft.com authored
This affects only the debug print TcRnDriver.pprTcGblEnv, and eliminates test-suite wobbling (affected me for tc168, tc231)
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
-
chak@cse.unsw.edu.au. authored
-
chak@cse.unsw.edu.au. authored
-
- 03 Jun, 2008 1 commit
-
-
simonpj@microsoft.com authored
-
- 30 May, 2008 2 commits
-
-
simonpj@microsoft.com authored
-
simonpj@microsoft.com authored
-
- 03 Jun, 2008 7 commits
-
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
-
Simon Marlow authored
From the docs: <para>Suppress any unsolicited debugging output. When GHC has been built with the <literal>DEBUG</literal> option it occasionally emits debug output of interest to developers. The extra output can confuse the testing framework and cause bogus test failures, so this flag is provided to turn it off.</para>
-
Simon Marlow authored
-
Simon Marlow authored
-
simonpj@microsoft.com authored
-
- 02 Jun, 2008 6 commits
-
-
simonpj@microsoft.com authored
-
chak@cse.unsw.edu.au. authored
-
Simon Marlow authored
-
Simon Marlow authored
This program makes a PAP with 203 arguments :-)
-
Simon Marlow authored
-
dias@eecs.harvard.edu authored
-
- 30 May, 2008 1 commit
-
-
Simon Marlow authored
The problem was that when loading interface files in checkOldIface, we were not passing the If monad the mutable variable for use when looking up entities in the *current* module, with the result that the knots wouldn't be tied properly, and some instances of TyCons would be incorrectly abstract. This bug has subtle effects: for example, recompiling a module without making any changes might lead to a slightly different result (noticed due to the new interface-file fingerprints). The bug doesn't lead to any direct failures that we're aware of.
-
- 29 May, 2008 1 commit
-
-
dias@eecs.harvard.edu authored
o Moved BlockId stuff to a new file to avoid module recursion o Defined stack areas for parameter-passing locations and spill slots o Part way through replacing copy in and copy out nodes - added movement instructions for stack pointer - added movement instructions for call and return parameters (but not with the proper calling conventions) o Inserting spills and reloads for proc points is now procpoint-aware (it was relying on the presence of a CopyIn node as a proxy for procpoint knowledge) o Changed ZipDataflow to expect AGraphs (instead of being polymorphic in the type of graph)
-
- 30 May, 2008 2 commits
-
-
Simon Marlow authored
-
rl@cse.unsw.edu.au authored
-
- 29 May, 2008 4 commits
-
-
chak@cse.unsw.edu.au. authored
-
Simon Marlow authored
-
Simon Marlow authored
For clients that forget to do hs_add_root()
-
Simon Marlow authored
-
- 28 May, 2008 1 commit
-
-
Simon Marlow authored
-
- 29 May, 2008 1 commit
-
-
dias@eecs.harvard.edu authored
Several changes in this patch, partially bug fixes, partially new code: o bug fixes in ZipDataflow - added some checks to verify that facts converge - removed some erroneous checks of convergence on entry nodes - added some missing applications of transfer functions o changed dataflow clients to use ZipDataflow, making ZipDataflow0 obsolete o eliminated DFA monad (no need for separate analysis and rewriting monads with ZipDataflow) o started stack layout changes - no longer generating CopyIn and CopyOut nodes (not yet fully expunged though) - still not using proper calling conventions o simple new optimizations: - common block elimination -- have not yet tried to move the Adams opt out of CmmProcPointZ - block concatenation o piped optimization fuel up to the HscEnv - can be limited by a command-line flag - not tested, and probably not yet properly used by clients o added unique supply to FuelMonad, also lifted unique supply to DFMonad
-
- 27 May, 2008 1 commit
-
-
chak@cse.unsw.edu.au. authored
-