- 11 Sep, 2000 1 commit
-
-
simonpj authored
Remove redundant setNoDiscardId call from Specialise.newIdSM
-
- 10 Sep, 2000 1 commit
-
-
panne authored
First (awkward) steps towards an HOpenGL integration
-
- 08 Sep, 2000 3 commits
- 07 Sep, 2000 14 commits
-
-
simonpj authored
A list of simplifier-related stuff, triggered by looking at GHC's performance. I don't guarantee that this lot will lead to a uniform improvement over 4.08, but it it should be a bit better. More work probably required. * Make the simplifier's Stop continuation record whether the expression being simplified is the RHS of a thunk, or (say) the body of a lambda or case RHS. In the thunk case we want to be a bit keener about inlining if the type of the thunk is amenable to update in place. * Fix interestingArg, which was being too liberal, and hence doing too much inlining. * Extended CoreUtils.exprIsCheap to make two more things cheap: - case (coerce x) of ... - let x = y +# z This makes a bit more eta expansion happen. It was provoked by a program of Marcin's. * MkIface.ifaceBinds. Make sure that we emit rules for things (like class operations) that don't get a top-level binding in the interface file. Previously such rules were silently forgotten. * Move transformRhs to *after* simplification, which makes it a little easier to do, and means that the arity it computes is readily available to completeBinding. This gets much better arities. * Do coerce splitting in completeBinding. This gets good code for newtype CInt = CInt Int test:: CInt -> Int test x = case x of 1 -> 2 2 -> 4 3 -> 8 4 -> 16 _ -> 0 * Modify the meaning of "arity" so that during compilation it means "if you apply this function to fewer args, it will do virtually no work". So, for example f = coerce t (\x -> e) has arity at least 1. When a function is exported, it's arity becomes the number of exposed, top-level lambdas, which is subtly different. But that's ok. I removed CoreUtils.exprArity altogether: it looked only at the exposed lambdas. Instead, we use exprEtaExpandArity exclusively. All of this makes I/O programs work much better.
-
simonpj authored
* The simplifier used to glom together all the top-level bindings into a single Rec every time it was invoked. The reason for this is explained in SimplCore.lhs, but for at least one simple program it meant that the simplifier never got around to unravelling the recursive group into non-recursive pieces. So I've put the glomming under explicit flag control with a -fglom-binds simplifier pass. A side benefit is that because it happens less often, the (expensive) SCC algorithm runs less often.
-
simonpj authored
Omit unnecessary import
-
simonpj authored
Do the begin-pass/end-pass stuff like the other core passes
-
simonpj authored
Add comment
-
simonpj authored
Add an access function substEnvEnv
-
simonpj authored
Get the worker and wrapper in the right order
-
simonpj authored
Primitives can return ThreadId# values
-
simonpj authored
1) Fix a bad bug in Subst.lhs that made uniqAway go into an infinite loop when the 'hash code' in the in-scope set was zero. 2) Rename BasicTypes.isFragileOccInfo to isFragileOcc Add isDeadOcc to BasisTypes (2) is just a tidy-up. I have to commit it now because of (1), which is a bad bug. I hope that I've committed all the files involved in (2).
-
rrt authored
Added support for building gmp.dll again.
-
rrt authored
Gave version of RedHat in DocBook note.
-
rrt authored
Added note on how to fix RedHat 6.2 DocBook installation.
-
simonpj authored
Improve -ddump-types
-
simonpj authored
* Make the desugarer use string equality for string literal patterns longer than 1 character. And put a specialised eqString into PrelBase, with a suitable specialisation rule. This makes a huge difference to the size of the code generated by deriving(Read) notably in Time.lhs
-
- 06 Sep, 2000 10 commits
-
-
simonmar authored
revert accidental parts of previous commit
-
simonmar authored
add test for typedef-conflict with f.i.d.
-
simonmar authored
Generate a new unique to be used in the typedef for a f.i.d., rather than re-using the one from the function call, which might conflict if there are two similar calls in the same module.
-
simonmar authored
Document -unreg and unregisterised compilation. Untested since our DocBook installation is currently broken.
-
simonmar authored
When compiling code for a case where the scrutinee is a primitve comparison operator, we used to place the tag in a variable whose unique was always the same: `mkPseudoUnique1 1'. This was mostly harmless but confused the Stix inliner in the NCG into generating slightly less efficient code when the variable was used twice in a basic block. This patch fixes the problem by generating a new unique by just changing the "tag" of an existing unique, namely the case binder.
-
rrt authored
Corrected URL for release notes.
-
rrt authored
Made message for exceeding 128Mb of heap on Windows more helpful, and only abort when this limit is exceeded, not on first memory allocation!
-
simonmar authored
Add codegen test for returning MutVar#.
-
simonmar authored
Add new PrimRep, namely PrimPtrRep, as a catch-all for the various boxed primitive types that currently don't have their own PrimReps. Use this for MVar# and MutVar#. This fixes a crash in the code generator when a function returns one of these types.
-
simonmar authored
recode primOpOkForSpeculation in terms of primOpIsCheap and primOpCanFail.
-
- 05 Sep, 2000 11 commits
-
-
simonmar authored
Add tests for newtypes in foreign declarations.
-
simonmar authored
update output
-
simonmar authored
Use newtype Ptr instead of just Addr, test newtypes in foreign decls.
-
simonmar authored
No need to set TMPDIR in BUILD_LIB now. Perhaps this was a workaround for the previous bug.
-
simonmar authored
- add -fno-warn-incomplete-patterns - rename TMPDIR to DEFAULT_TMPDIR - check TMPDIR environment variable (apprently missing before) - add a bunch of anti-flags for profiling: -no-auto-all and friends.
-
simonmar authored
Rename the make variable TMPDIR to DEFAULT_TMPDIR. This fixes the problem that saying 'TMPDIR=/foo make' in an fptools tree didn't work, because GNU make is in the habit of overriding an environment variable with the value of the corresponding make variable in a sub-process.
-
simonmar authored
Just include ghc/docs/set in a binary distribution, not the build system docs or the FFI spec.
-
simonmar authored
remove a lot of unused gumph from this file
-
simonmar authored
remove last use of REALLY_HASKELL_1_3
-
simonmar authored
Use std monadic operators instead of `thenStrictlyST` and friends.
-
simonmar authored
comment update
-