ghc-hetmet.git
24 years ago[project @ 1999-08-02 16:12:12 by simonmar]
simonmar [Mon, 2 Aug 1999 16:12:12 +0000 (16:12 +0000)]
[project @ 1999-08-02 16:12:12 by simonmar]
Add some quick-start instructions.

24 years ago[project @ 1999-08-02 16:07:58 by simonmar]
simonmar [Mon, 2 Aug 1999 16:07:58 +0000 (16:07 +0000)]
[project @ 1999-08-02 16:07:58 by simonmar]
update a little.

24 years ago[project @ 1999-08-02 16:01:24 by simonmar]
simonmar [Mon, 2 Aug 1999 16:01:31 +0000 (16:01 +0000)]
[project @ 1999-08-02 16:01:24 by simonmar]
Move the RTS document into the ghc tree where it belongs.

24 years ago[project @ 1999-08-02 13:11:02 by simonmar]
simonmar [Mon, 2 Aug 1999 13:11:02 +0000 (13:11 +0000)]
[project @ 1999-08-02 13:11:02 by simonmar]
Only require happy if compiling ghc, and ask for version 1.6

24 years ago[project @ 1999-08-02 11:43:41 by simonmar]
simonmar [Mon, 2 Aug 1999 11:43:41 +0000 (11:43 +0000)]
[project @ 1999-08-02 11:43:41 by simonmar]
add gcdIntegerzh.

24 years ago[project @ 1999-08-02 10:35:53 by simonmar]
simonmar [Mon, 2 Aug 1999 10:35:53 +0000 (10:35 +0000)]
[project @ 1999-08-02 10:35:53 by simonmar]
Oops, back out most of last revision.  Other changes crept in by mistake.

24 years ago[project @ 1999-08-02 09:52:43 by simonmar]
simonmar [Mon, 2 Aug 1999 09:52:43 +0000 (09:52 +0000)]
[project @ 1999-08-02 09:52:43 by simonmar]
fix a couple of typos in the rules docs.

24 years ago[project @ 1999-08-02 09:47:18 by simonmar]
simonmar [Mon, 2 Aug 1999 09:47:18 +0000 (09:47 +0000)]
[project @ 1999-08-02 09:47:18 by simonmar]
oops, 'g' and 'h' aren't hex digits.

24 years ago[project @ 1999-07-31 18:43:48 by sof]
sof [Sat, 31 Jul 1999 18:43:48 +0000 (18:43 +0000)]
[project @ 1999-07-31 18:43:48 by sof]
nullary recpat reg. test

24 years ago[project @ 1999-07-31 18:43:21 by sof]
sof [Sat, 31 Jul 1999 18:43:21 +0000 (18:43 +0000)]
[project @ 1999-07-31 18:43:21 by sof]
syntactically invalid

24 years ago[project @ 1999-07-31 18:40:27 by sof]
sof [Sat, 31 Jul 1999 18:40:27 +0000 (18:40 +0000)]
[project @ 1999-07-31 18:40:27 by sof]
Exhaustiveness checks for patterns containing a nullary recpat
panic'ed. Fixed.

24 years ago[project @ 1999-07-30 14:20:22 by simonmar]
simonmar [Fri, 30 Jul 1999 14:20:22 +0000 (14:20 +0000)]
[project @ 1999-07-30 14:20:22 by simonmar]
Fix -monly-3-regs problem.

24 years ago[project @ 1999-07-30 11:26:09 by simonmar]
simonmar [Fri, 30 Jul 1999 11:26:09 +0000 (11:26 +0000)]
[project @ 1999-07-30 11:26:09 by simonmar]
typePrimRep should work on the repType, avoiding foralls etc.

24 years ago[project @ 1999-07-29 16:28:20 by sof]
sof [Thu, 29 Jul 1999 16:28:20 +0000 (16:28 +0000)]
[project @ 1999-07-29 16:28:20 by sof]
Removed rather odd quote-removal sed patterns; surely not needed... (they were causing CPP trouble)

24 years ago[project @ 1999-07-29 16:19:33 by sof]
sof [Thu, 29 Jul 1999 16:19:33 +0000 (16:19 +0000)]
[project @ 1999-07-29 16:19:33 by sof]
Fixed bug/limitation in command-line handling.

24 years ago[project @ 1999-07-29 13:57:34 by sof]
sof [Thu, 29 Jul 1999 13:57:34 +0000 (13:57 +0000)]
[project @ 1999-07-29 13:57:34 by sof]
Recent CPP-related wibblement meant that _WIN32 wasn't defined when
the pre-proc was run (cf. -undef usage.) Avoid the use of _WIN32

24 years ago[project @ 1999-07-29 13:13:58 by sof]
sof [Thu, 29 Jul 1999 13:13:58 +0000 (13:13 +0000)]
[project @ 1999-07-29 13:13:58 by sof]
Another cosmetic change - avoid desugar warning

24 years ago[project @ 1999-07-29 11:30:30 by sof]
sof [Thu, 29 Jul 1999 11:30:30 +0000 (11:30 +0000)]
[project @ 1999-07-29 11:30:30 by sof]
showPrimRep - dead code removal. No need to carry over to 4.04

24 years ago[project @ 1999-07-29 10:03:18 by simonmar]
simonmar [Thu, 29 Jul 1999 10:03:18 +0000 (10:03 +0000)]
[project @ 1999-07-29 10:03:18 by simonmar]
test for bit shifts by 32.

24 years ago[project @ 1999-07-29 10:01:05 by simonmar]
simonmar [Thu, 29 Jul 1999 10:01:05 +0000 (10:01 +0000)]
[project @ 1999-07-29 10:01:05 by simonmar]
Document changes to shift operations.

24 years ago[project @ 1999-07-29 10:00:22 by simonmar]
simonmar [Thu, 29 Jul 1999 10:00:22 +0000 (10:00 +0000)]
[project @ 1999-07-29 10:00:22 by simonmar]
Shift operations where the shift count is greater than the width of
the type being shifted are now defined as returning zero (or -1 in the
case of a negative integer being shifted right with iShiftRA).

24 years ago[project @ 1999-07-29 09:08:26 by simonmar]
simonmar [Thu, 29 Jul 1999 09:08:26 +0000 (09:08 +0000)]
[project @ 1999-07-29 09:08:26 by simonmar]
The hscpp saga continues, this time mysterious 2's are appearing in my
files.

24 years ago[project @ 1999-07-28 15:34:39 by simonpj]
simonpj [Wed, 28 Jul 1999 15:34:39 +0000 (15:34 +0000)]
[project @ 1999-07-28 15:34:39 by simonpj]
Improve error msg in tcPolyExpr; Simon pls merge into release

24 years ago[project @ 1999-07-28 14:57:21 by simonmar]
simonmar [Wed, 28 Jul 1999 14:57:21 +0000 (14:57 +0000)]
[project @ 1999-07-28 14:57:21 by simonmar]
- Use explicit file modes when installing binaries & scripts (not essential,
  but someone complained about it).

- Use $(INSTALL_SCRIPT) for scripts

24 years ago[project @ 1999-07-28 14:10:09 by simonmar]
simonmar [Wed, 28 Jul 1999 14:10:09 +0000 (14:10 +0000)]
[project @ 1999-07-28 14:10:09 by simonmar]
Sigh, another go at getting #line directives right.

24 years ago[project @ 1999-07-28 08:34:45 by simonmar]
simonmar [Wed, 28 Jul 1999 08:34:45 +0000 (08:34 +0000)]
[project @ 1999-07-28 08:34:45 by simonmar]
Allow unboxed tuple components to have polymorphic types.

24 years ago[project @ 1999-07-27 15:56:59 by simonmar]
simonmar [Tue, 27 Jul 1999 15:56:59 +0000 (15:56 +0000)]
[project @ 1999-07-27 15:56:59 by simonmar]
Sigh, didn't work in the  cpp, !literate case.

24 years ago[project @ 1999-07-27 15:27:15 by simonmar]
simonmar [Tue, 27 Jul 1999 15:27:15 +0000 (15:27 +0000)]
[project @ 1999-07-27 15:27:15 by simonmar]
oops, debugging code committed by mistake.

24 years ago[project @ 1999-07-27 13:55:57 by simonmar]
simonmar [Tue, 27 Jul 1999 13:55:57 +0000 (13:55 +0000)]
[project @ 1999-07-27 13:55:57 by simonmar]
Fix filenames in {-# LINE #-} directives when using both unlit and
hscpp (I think).

24 years ago[project @ 1999-07-27 13:29:08 by simonmar]
simonmar [Tue, 27 Jul 1999 13:29:08 +0000 (13:29 +0000)]
[project @ 1999-07-27 13:29:08 by simonmar]
fix typo in hppa1.1 support.

24 years ago[project @ 1999-07-27 12:07:36 by sof]
sof [Tue, 27 Jul 1999 12:07:36 +0000 (12:07 +0000)]
[project @ 1999-07-27 12:07:36 by sof]
remove spurious ^M's

24 years ago[project @ 1999-07-27 11:12:05 by simonmar]
simonmar [Tue, 27 Jul 1999 11:12:05 +0000 (11:12 +0000)]
[project @ 1999-07-27 11:12:05 by simonmar]
add unofficial/undocumented function:

    mkWeakIORef :: IORef a -> IO () -> IO (Weak (IORef a))

for weak pointers to IORefs.  This avoids some of the problems with
inlining disturbing the semantics of mkWeak by making the weak key
point to the primitive MutVar instead of the box.

24 years ago[project @ 1999-07-27 11:09:31 by simonmar]
simonmar [Tue, 27 Jul 1999 11:09:31 +0000 (11:09 +0000)]
[project @ 1999-07-27 11:09:31 by simonmar]
Allow mkWeak# to take an unlifted type as the key argument.  The
intention is that boxed-but-unlifted types can be used as keys, not
unlifted types in general but there's no way to enforce this at the
moment.

24 years ago[project @ 1999-07-27 11:02:14 by simonmar]
simonmar [Tue, 27 Jul 1999 11:02:14 +0000 (11:02 +0000)]
[project @ 1999-07-27 11:02:14 by simonmar]
+RTS -s<blah>  ==>  +RTS -S<blah>

for -Rghc-timing.  The former now gives only summary statistics, as
advertised.

24 years ago[project @ 1999-07-27 10:53:53 by sof]
sof [Tue, 27 Jul 1999 10:53:53 +0000 (10:53 +0000)]
[project @ 1999-07-27 10:53:53 by sof]
If calling a 'foreign export'ed Haskell function resulted in an error,
localise the error by supplying the module name as well as the name
of the function.

24 years ago[project @ 1999-07-27 10:50:17 by sof]
sof [Tue, 27 Jul 1999 10:50:19 +0000 (10:50 +0000)]
[project @ 1999-07-27 10:50:17 by sof]
Improve the UI a little for modules contain 'foreign export' declarations -
no longer demand that module name == (basename filename)

24 years ago[project @ 1999-07-27 10:18:34 by simonmar]
simonmar [Tue, 27 Jul 1999 10:18:34 +0000 (10:18 +0000)]
[project @ 1999-07-27 10:18:34 by simonmar]
Something is very screwy here.  This file does not appear to have been
removed, but it doesn't have any tags beyond 2.04.

24 years ago[project @ 1999-07-27 09:25:49 by simonmar]
simonmar [Tue, 27 Jul 1999 09:25:50 +0000 (09:25 +0000)]
[project @ 1999-07-27 09:25:49 by simonmar]
Back out yesterday's change to Parser.y, and throw out illegal do
expressions in the renamer instead.  It turned out to be hard to get
the optional semicolons right in the grammar at the same time as
checking that the last statement is an expression.

24 years ago[project @ 1999-07-27 07:42:31 by simonpj]
simonpj [Tue, 27 Jul 1999 07:42:31 +0000 (07:42 +0000)]
[project @ 1999-07-27 07:42:31 by simonpj]
Add a bit more info about hi-boot files

24 years ago[project @ 1999-07-27 07:31:16 by simonpj]
simonpj [Tue, 27 Jul 1999 07:31:24 +0000 (07:31 +0000)]
[project @ 1999-07-27 07:31:16 by simonpj]
Do a more correct job of explicit for-alls in types

24 years ago[project @ 1999-07-27 07:30:00 by simonpj]
simonpj [Tue, 27 Jul 1999 07:30:00 +0000 (07:30 +0000)]
[project @ 1999-07-27 07:30:00 by simonpj]
Add rnfail018

24 years ago[project @ 1999-07-26 18:37:26 by simonmar]
simonmar [Mon, 26 Jul 1999 18:37:26 +0000 (18:37 +0000)]
[project @ 1999-07-26 18:37:26 by simonmar]
Remove some unused things.

24 years ago[project @ 1999-07-26 16:06:28 by simonpj]
simonpj [Mon, 26 Jul 1999 16:06:28 +0000 (16:06 +0000)]
[project @ 1999-07-26 16:06:28 by simonpj]
Adopt the following syntax for stmts:

stmts  -> stmt1 ; ... stmtn ; exp [;]

That is, a do-notation thing must finish with an expression.

24 years ago[project @ 1999-07-26 16:01:51 by simonpj]
simonpj [Mon, 26 Jul 1999 16:01:51 +0000 (16:01 +0000)]
[project @ 1999-07-26 16:01:51 by simonpj]
Add read009, do-notation

24 years ago[project @ 1999-07-26 15:37:41 by simonpj]
simonpj [Mon, 26 Jul 1999 15:37:41 +0000 (15:37 +0000)]
[project @ 1999-07-26 15:37:41 by simonpj]
Make Type.isUnLiftedType return True for forall'd unlifted types:
e.g. x :: forall a. Int#

I found bindings like these were getting floated to the top level.
They are pretty bogus types, mind you.  It would be better never to
construct them.

(George Russell tripped over this one.)

24 years ago[project @ 1999-07-26 15:31:01 by simonpj]
simonpj [Mon, 26 Jul 1999 15:31:02 +0000 (15:31 +0000)]
[project @ 1999-07-26 15:31:01 by simonpj]
* Fix a bug in the unifier that made the typechecker
  loop on a 5-line program from Sigbjorn.  The bug is
  documented near the fix, in

TcUnify.uUnboundVar

24 years ago[project @ 1999-07-26 15:30:29 by simonpj]
simonpj [Mon, 26 Jul 1999 15:30:29 +0000 (15:30 +0000)]
[project @ 1999-07-26 15:30:29 by simonpj]
Add rnfail017

24 years ago[project @ 1999-07-26 15:22:38 by simonpj]
simonpj [Mon, 26 Jul 1999 15:22:38 +0000 (15:22 +0000)]
[project @ 1999-07-26 15:22:38 by simonpj]
Fix type in tcMatch discovered by Keith

24 years ago[project @ 1999-07-26 15:21:56 by simonpj]
simonpj [Mon, 26 Jul 1999 15:21:56 +0000 (15:21 +0000)]
[project @ 1999-07-26 15:21:56 by simonpj]
Add tc102

24 years ago[project @ 1999-07-16 15:49:52 by keithw]
keithw [Fri, 16 Jul 1999 15:49:52 +0000 (15:49 +0000)]
[project @ 1999-07-16 15:49:52 by keithw]
Remove dead token IThash added yesterday by mistake.

24 years ago[project @ 1999-07-16 15:12:15 by sewardj]
sewardj [Fri, 16 Jul 1999 15:12:15 +0000 (15:12 +0000)]
[project @ 1999-07-16 15:12:15 by sewardj]
Fix use of _unused var for ghc-3.XX.

24 years ago[project @ 1999-07-16 15:03:40 by sewardj]
sewardj [Fri, 16 Jul 1999 15:03:43 +0000 (15:03 +0000)]
[project @ 1999-07-16 15:03:40 by sewardj]
cpp-ify some H98isms with PSEQ and SAPPLY to placate ghc-3.0X

24 years ago[project @ 1999-07-16 14:06:57 by simonpj]
simonpj [Fri, 16 Jul 1999 14:06:57 +0000 (14:06 +0000)]
[project @ 1999-07-16 14:06:57 by simonpj]
* Fix a bug in the unifier that made the typechecker
  loop on a 5-line program from Sigbjorn.  The bug is
  documented near the fix, in

TcUnify.uUnboundVar

24 years ago[project @ 1999-07-16 13:34:20 by simonpj]
simonpj [Fri, 16 Jul 1999 13:34:20 +0000 (13:34 +0000)]
[project @ 1999-07-16 13:34:20 by simonpj]
Add tc101

24 years ago[project @ 1999-07-16 11:08:58 by sewardj]
sewardj [Fri, 16 Jul 1999 11:08:59 +0000 (11:08 +0000)]
[project @ 1999-07-16 11:08:58 by sewardj]
Fix trivial parse errors.

24 years ago[project @ 1999-07-16 09:53:44 by panne]
panne [Fri, 16 Jul 1999 09:53:44 +0000 (09:53 +0000)]
[project @ 1999-07-16 09:53:44 by panne]
More 64bit fun: Fixed an ill-placed #ifdef and added a cast to a
numeric literal (for explanation see yesterday's fix).

24 years ago[project @ 1999-07-16 09:46:31 by keithw]
keithw [Fri, 16 Jul 1999 09:46:31 +0000 (09:46 +0000)]
[project @ 1999-07-16 09:46:31 by keithw]
Layout fix to uses of ASSERT in do expressions; thanks Kevin for
pointing out the problem.

24 years ago[project @ 1999-07-16 09:41:12 by panne]
panne [Fri, 16 Jul 1999 09:41:12 +0000 (09:41 +0000)]
[project @ 1999-07-16 09:41:12 by panne]
More 64bit fun: Fixed an ill-placed #ifdef and added a cast to a
numeric literal (for explanation see yesterday's fix).

24 years ago[project @ 1999-07-16 09:36:07 by simonpj]
simonpj [Fri, 16 Jul 1999 09:36:08 +0000 (09:36 +0000)]
[project @ 1999-07-16 09:36:07 by simonpj]
* Fix long-standing bug in TcIfaceSig which meant it occasionally complained
  about a lint error in an unfolding, with a locally-defined name not
  being in scope.   This only happened when hi-boot loops were being
  tied, so an unfolding might mention a locally-defined name.

24 years ago[project @ 1999-07-16 09:34:38 by simonpj]
simonpj [Fri, 16 Jul 1999 09:34:38 +0000 (09:34 +0000)]
[project @ 1999-07-16 09:34:38 by simonpj]
* Fix trivial bug in WwLib.mkWWfixup,
  which showed up when booting the compiler.

24 years ago[project @ 1999-07-16 08:56:41 by panne]
panne [Fri, 16 Jul 1999 08:57:05 +0000 (08:57 +0000)]
[project @ 1999-07-16 08:56:41 by panne]
More small portability changes:
   * For older GHCs use IOBase instead of PrelIOBase
   * Never use commas in SLIT. cpp IS a hack for Haskell...

24 years ago[project @ 1999-07-15 18:16:41 by panne]
panne [Thu, 15 Jul 1999 18:16:41 +0000 (18:16 +0000)]
[project @ 1999-07-15 18:16:41 by panne]
Patched my previous patch ($ vs $$, && vs if/then/fi). Installing a
Happy binary-dist still only creates a happy and no happy-1.6
executable, but this has very probably nothing to do with my changes.

24 years ago[project @ 1999-07-15 16:20:46 by panne]
panne [Thu, 15 Jul 1999 16:20:46 +0000 (16:20 +0000)]
[project @ 1999-07-15 16:20:46 by panne]
Two checks for empty file lists added.

24 years ago[project @ 1999-07-15 16:11:29 by panne]
panne [Thu, 15 Jul 1999 16:11:29 +0000 (16:11 +0000)]
[project @ 1999-07-15 16:11:29 by panne]
We have to be very careful with numeric literals in the C part, in
this case 0xff (of type int = 4 bytes on Alpha) was shifted left 56
times => always zero  :-{  Using an L or UL suffix is not always
practical, because the needed size depends on conditional typedefs
somewhere else. Solution: Cast!  :-P  ghc/includes contains some more
suspicious literals, but I did not have a look at them yet.

24 years ago[project @ 1999-07-15 14:08:03 by keithw]
keithw [Thu, 15 Jul 1999 14:08:50 +0000 (14:08 +0000)]
[project @ 1999-07-15 14:08:03 by keithw]
This commit makes a start at implementing polymorphic usage
annotations.

* The module Type has now been split into TypeRep, containing the
  representation Type(..) and other information for `friends' only,
  and Type, providing the public interface to Type.  Due to a bug in
  the interface-file slurping prior to ghc-4.04, {-# SOURCE #-}
  dependencies must unfortunately still refer to TypeRep even though
  they are not friends.

* Unfoldings in interface files now print as __U instead of __u.
  UpdateInfo now prints as __UA instead of __U.

* A new sort of variables, UVar, in their own namespace, uvName, has
  been introduced for usage variables.

* Usage binders __fuall uv have been introduced.  Usage annotations
  are now __u - ty (used once), __u ! ty (used possibly many times),
  __u uv ty (used uv times), where uv is a UVar.  __o and __m have
  gone.  All this still lives only in a TyNote, *for now* (but not for
  much longer).

* Variance calculation for TyCons has moved from
  typecheck/TcTyClsDecls to types/Variance.

* Usage annotation and inference are now done together in a single
  pass.  Provision has been made for inferring polymorphic usage
  annotations (with __fuall) but this has not yet been implemented.
  Watch this space!

24 years ago[project @ 1999-07-15 09:58:23 by simonmar]
simonmar [Thu, 15 Jul 1999 09:58:23 +0000 (09:58 +0000)]
[project @ 1999-07-15 09:58:23 by simonmar]
No more RAWCPP, thank you.

24 years ago[project @ 1999-07-15 09:56:04 by simonmar]
simonmar [Thu, 15 Jul 1999 09:56:04 +0000 (09:56 +0000)]
[project @ 1999-07-15 09:56:04 by simonmar]
Use +RTS -S<file> rather than +RTS -s<file>, since the latter only
gives summary statistics now.

24 years ago[project @ 1999-07-15 09:51:52 by simonmar]
simonmar [Thu, 15 Jul 1999 09:51:52 +0000 (09:51 +0000)]
[project @ 1999-07-15 09:51:52 by simonmar]
A prime example of how an inconsistent .hi-boot file can really ruin
your day: the definition of CoreRules in CoreSyn.hi-boot was out of
sync with the real one, which meant that the compiler generated the
wrong code for a `seq` on something of type CoreRules.

24 years ago[project @ 1999-07-15 08:51:25 by simonmar]
simonmar [Thu, 15 Jul 1999 08:51:25 +0000 (08:51 +0000)]
[project @ 1999-07-15 08:51:25 by simonmar]
oops, forgot to commit this yesterday.

RAWCPP is now '$(CPP) -undef -traditional'.

24 years ago[project @ 1999-07-14 22:10:40 by simonpj]
simonpj [Wed, 14 Jul 1999 22:10:42 +0000 (22:10 +0000)]
[project @ 1999-07-14 22:10:40 by simonpj]
[Simon: this should fix that -funfolding-use-threshold0 lint bug]

[Kevin: have a look at WwLib.mkWwBodies.  Isn't it a thing of beauty?
Could you think about whether the CPR stuff could be cleaned
up a bit?  The strictness stuff is much shorter.]

This commit tidies up WwLib.mkWwBodies, fixing a couple of bugs.

* One bug showed up when CPR made a worker return an unboxed tuple,
  but the worker didn't have any other arguments.  The "add a void arg"
  hack needed to be generalised a bit.

* The other bug showed up when booting the compiler.  There's a long
  comment near splitProductType in WwLib.lhs that explains the problem.

24 years ago[project @ 1999-07-14 20:29:34 by panne]
panne [Wed, 14 Jul 1999 20:29:34 +0000 (20:29 +0000)]
[project @ 1999-07-14 20:29:34 by panne]
Enlarged heap for 2.10-compiled Happy on Alphas

24 years ago[project @ 1999-07-14 15:28:08 by simonmar]
simonmar [Wed, 14 Jul 1999 15:28:08 +0000 (15:28 +0000)]
[project @ 1999-07-14 15:28:08 by simonmar]
pre-4.03 didn't have __HASKELL98__, use something else.

24 years ago[project @ 1999-07-14 14:40:20 by simonpj]
simonpj [Wed, 14 Jul 1999 14:41:04 +0000 (14:41 +0000)]
[project @ 1999-07-14 14:40:20 by simonpj]
Main things:

* Add splitProductType_maybe to DataCon.lhs, with type
  splitProductType_maybe
:: Type  -- A product type, perhaps
-> Maybe (TyCon,  -- The type constructor
  [Type], -- Type args of the tycon
  DataCon, -- The data constructor
  [Type]) -- Its *representation* arg types

  Then use it in many places (e.g. worker-wrapper places) instead
  of a pile of junk

* Clean up various uses of dataConArgTys, which were plain wrong because
  they weren't passed the existential type arguments.  Most of these calls
  are eliminated by using splitProductType_maybe above.  I hope I correctly
  squashed the others. This fixes a bug that Meurig's programs showed up.

    module FailGHC (killSustainer) where
    import Weak
    import IOExts

    data Sustainer = forall a . Sustainer (IORef (Maybe a)) (IO ())

    killSustainer :: Sustainer -> IO ()
    killSustainer (Sustainer _ act) = act

  The above program used to kill the compiler.

* A fairly concerted attack on the Dreaded Space Leak.
- Add Type.seqType, CoreSyn.seqExpr, CoreSyn.seqRules

- Add some seq'ing when building Ids and IdInfos
These reduce the space usage a lot

- Add CoreSyn.coreBindsSize, which is pretty strict in the program,
and call it when we have -dshow-passes.

- Do not put the inlining in an Id that is being plugged into
the result-expression of the simplifier.  This cures
a the 'wedge' in the space profile for reasons I don't understand fully

  Together, these things reduce the max space usage when compiling PrelNum from
  17M to about 7Mbytes.

  I think there are now *too many* seqs, and they waste work, but I don't have
  time to find which ones.

  Furthermore, we aren't done. For some reason, some of the stuff allocated by
  the simplifier makes it through all during code generation and I don't see why.
  There's a should-be-unnecessary call to coreBindsSize in Main.main which
  zaps some, but not all of this space.

  -dshow-passes reduces space usage a bit, but I don't think it should really.

  All the measurements were made on a compiler compiled with profiling by
  GHC 3.03.    I hope they carry over to other builds!

* One trivial thing: changed all variables 'label' to 'lbl', becuase the
  former is a keyword with -fglagow-exts in GHC 3.03 (which I was compiling with).
  Something similar in StringBuffer.

24 years ago[project @ 1999-07-14 13:44:19 by simonmar]
simonmar [Wed, 14 Jul 1999 13:44:19 +0000 (13:44 +0000)]
[project @ 1999-07-14 13:44:19 by simonmar]
- Add findPtr() - searches through the heap for an occurrence of a
  given value.  Useful when debugging.

24 years ago[project @ 1999-07-14 13:39:46 by simonmar]
simonmar [Wed, 14 Jul 1999 13:42:28 +0000 (13:42 +0000)]
[project @ 1999-07-14 13:39:46 by simonmar]
Workaround bug in Linux's glibc 2.1:  don't fflush(stdout) before
writing to stderr.

24 years ago[project @ 1999-07-14 13:38:27 by simonmar]
simonmar [Wed, 14 Jul 1999 13:38:27 +0000 (13:38 +0000)]
[project @ 1999-07-14 13:38:27 by simonmar]
use shutdownHaskellAndExit().

24 years ago[project @ 1999-07-14 13:37:44 by simonmar]
simonmar [Wed, 14 Jul 1999 13:37:44 +0000 (13:37 +0000)]
[project @ 1999-07-14 13:37:44 by simonmar]
- add USE_REPORT_PRELUDE
- Directory and Time don't need -monly-3-regs any more
- remove a -fno-prune-tydecls

24 years ago[project @ 1999-07-14 13:35:49 by sewardj]
sewardj [Wed, 14 Jul 1999 13:35:53 +0000 (13:35 +0000)]
[project @ 1999-07-14 13:35:49 by sewardj]
Changed vars of the form _unused to zz_unused, since 3.02 doesn't understand
this convention.

24 years ago[project @ 1999-07-14 13:26:48 by simonmar]
simonmar [Wed, 14 Jul 1999 13:26:52 +0000 (13:26 +0000)]
[project @ 1999-07-14 13:26:48 by simonmar]
Don't attempt to discover the exact location of cpp, instead use 'gcc
-E'.  With the right combination of flags, it seems we can get the
same behaviour as calling cpp directly.

24 years ago[project @ 1999-07-14 13:23:51 by simonmar]
simonmar [Wed, 14 Jul 1999 13:23:51 +0000 (13:23 +0000)]
[project @ 1999-07-14 13:23:51 by simonmar]
Update to match CgUsages.hi-boot-5

24 years ago[project @ 1999-07-14 12:31:14 by simonmar]
simonmar [Wed, 14 Jul 1999 12:31:14 +0000 (12:31 +0000)]
[project @ 1999-07-14 12:31:14 by simonmar]
Recover the -funbox-strict-fields test.

24 years ago[project @ 1999-07-14 11:47:12 by simonmar]
simonmar [Wed, 14 Jul 1999 11:47:12 +0000 (11:47 +0000)]
[project @ 1999-07-14 11:47:12 by simonmar]
4.04

24 years ago[project @ 1999-07-14 11:46:36 by simonmar]
simonmar [Wed, 14 Jul 1999 11:46:36 +0000 (11:46 +0000)]
[project @ 1999-07-14 11:46:36 by simonmar]
4.04 changes.

24 years ago[project @ 1999-07-14 11:33:10 by simonmar]
simonmar [Wed, 14 Jul 1999 11:33:12 +0000 (11:33 +0000)]
[project @ 1999-07-14 11:33:10 by simonmar]
- add 4.04 release notes
- several other docfixes and markup fixes.

24 years ago[project @ 1999-07-14 11:16:43 by simonmar]
simonmar [Wed, 14 Jul 1999 11:16:43 +0000 (11:16 +0000)]
[project @ 1999-07-14 11:16:43 by simonmar]
link in NonTermination_static_closure.

24 years ago[project @ 1999-07-14 11:15:09 by simonmar]
simonmar [Wed, 14 Jul 1999 11:15:09 +0000 (11:15 +0000)]
[project @ 1999-07-14 11:15:09 by simonmar]
add NonTermination_closure.

24 years ago[project @ 1999-07-14 10:01:43 by simonmar]
simonmar [Wed, 14 Jul 1999 10:01:43 +0000 (10:01 +0000)]
[project @ 1999-07-14 10:01:43 by simonmar]
Fix my email address.

24 years ago[project @ 1999-07-14 08:41:21 by simonmar]
simonmar [Wed, 14 Jul 1999 08:41:21 +0000 (08:41 +0000)]
[project @ 1999-07-14 08:41:21 by simonmar]
Small typos from Wolfram Kahl.

24 years ago[project @ 1999-07-14 08:37:57 by simonmar]
simonmar [Wed, 14 Jul 1999 08:37:58 +0000 (08:37 +0000)]
[project @ 1999-07-14 08:37:57 by simonmar]
USE_REPORT_PRELUDE patches from Wolfram Kahl.

24 years ago[project @ 1999-07-14 08:33:38 by simonmar]
simonmar [Wed, 14 Jul 1999 08:33:38 +0000 (08:33 +0000)]
[project @ 1999-07-14 08:33:38 by simonmar]
Add NonTermination to the exception type.  Prints as "<<loop>>"
(better suggestions welcome).

24 years ago[project @ 1999-07-12 14:40:08 by simonmar]
simonmar [Mon, 12 Jul 1999 14:40:11 +0000 (14:40 +0000)]
[project @ 1999-07-12 14:40:08 by simonmar]
Keep the original name for non-exported record selectors and class
methods.

24 years ago[project @ 1999-07-12 10:43:10 by sof]
sof [Mon, 12 Jul 1999 10:43:13 +0000 (10:43 +0000)]
[project @ 1999-07-12 10:43:10 by sof]
Cygwin B19 compatibility fixes

24 years ago[project @ 1999-07-08 13:51:17 by sof]
sof [Thu, 8 Jul 1999 13:51:17 +0000 (13:51 +0000)]
[project @ 1999-07-08 13:51:17 by sof]
foreign export regression test

24 years ago[project @ 1999-07-08 13:46:25 by sof]
sof [Thu, 8 Jul 1999 13:46:27 +0000 (13:46 +0000)]
[project @ 1999-07-08 13:46:25 by sof]
A 'foreign export' (static) declaration doesn't bind a name but
simply adds an occurrence of a name.

24 years ago[project @ 1999-07-08 11:02:10 by simonpj]
simonpj [Thu, 8 Jul 1999 11:02:10 +0000 (11:02 +0000)]
[project @ 1999-07-08 11:02:10 by simonpj]
Fix shadowing bug in rule matcher (showed up in spectral/rewrite)

24 years ago[project @ 1999-07-08 08:10:52 by simonmar]
simonmar [Thu, 8 Jul 1999 08:10:52 +0000 (08:10 +0000)]
[project @ 1999-07-08 08:10:52 by simonmar]
Back out rev 1.30 - it broke a lot of things.

24 years ago[project @ 1999-07-07 15:28:19 by simonmar]
simonmar [Wed, 7 Jul 1999 15:28:19 +0000 (15:28 +0000)]
[project @ 1999-07-07 15:28:19 by simonmar]
Reduce ScrutConDiscount from 3 to 2.

24 years ago[project @ 1999-07-07 15:27:27 by simonmar]
simonmar [Wed, 7 Jul 1999 15:27:27 +0000 (15:27 +0000)]
[project @ 1999-07-07 15:27:27 by simonmar]
- charge 1 for a case expression

- give a discount of opt_UF_ScrutConDiscount each time a constructor
  is scrutinised

(previously a case expression was not charged for at all, and the
discount for a scrutinised constructor was (opt_UF_ScrutConDiscount *
tyconFamilySize).  In 4.02, a case expression was also charged
tyconFamilySize to balance the discount, but this had the disadvantage
of charging for alternatives which may not be present in the actual
case expression).

24 years ago[project @ 1999-07-07 11:22:13 by simonmar]
simonmar [Wed, 7 Jul 1999 11:22:13 +0000 (11:22 +0000)]
[project @ 1999-07-07 11:22:13 by simonmar]
Back out yesterday's change - needs more thought.

24 years ago[project @ 1999-07-06 16:45:31 by simonpj]
simonpj [Tue, 6 Jul 1999 16:46:12 +0000 (16:46 +0000)]
[project @ 1999-07-06 16:45:31 by simonpj]
All Simon's recent tuning changes.  Rough summary follows:

* Fix Kevin Atkinson's cant-find-instance bug.  Turns out that Rename.slurpSourceRefs
  needs to repeatedly call getImportedInstDecls, and then go back to slurping
  source-refs.  Comments with Rename.slurpSourceRefs.

* Add a case to Simplify.mkDupableAlt for the quite-common case where there's
  a very simple alternative, in which case there's no point in creating a
  join-point binding.

* Fix CoreUtils.exprOkForSpeculation so that it returns True of (==# a# b#).
  This lack meant that
case ==# a# b# of { True -> x; False -> x }
  was not simplifying

* Make float-out dump bindings at the top of a function argument, as
  at the top of a let(rec) rhs.  See notes with FloatOut.floatRhs

* Make the ArgOf case of mkDupableAlt generate a OneShot lambda.
  This gave a noticeable boost to spectral/boyer2

* Reduce the number of coerces, using worker/wrapper stuff.
  The main idea is in WwLib.mkWWcoerce.  The gloss is that we must do
  the w/w split even for small non-recursive things.  See notes with
  WorkWrap.tryWw.

* This further complicated getWorkerId, so I finally bit the bullet and
  make the workerInfo field of the IdInfo work properly, including
  under substitutions.  Death to getWorkerId.  Kevin Glynn will be happy.

* Make all lambdas over realWorldStatePrimTy
  into one-shot lambdas.  This is a GROSS HACK.

* Also make the occurrence analyser aware of one-shot lambdas.

* Make various Prelude things into INLINE, so that foldr doesn't
  get inlined in their body, so that the caller gets the benefit
  of fusion.  Notably in PrelArr.lhs.