ghc-hetmet.git
24 years ago[project @ 1999-06-23 10:42:07 by simonmar]
simonmar [Wed, 23 Jun 1999 10:42:07 +0000 (10:42 +0000)]
[project @ 1999-06-23 10:42:07 by simonmar]
Test for pattern type signatures.

24 years ago[project @ 1999-06-23 10:38:13 by simonmar]
simonmar [Wed, 23 Jun 1999 10:38:15 +0000 (10:38 +0000)]
[project @ 1999-06-23 10:38:13 by simonmar]
Make scoped type variables work.

24 years ago[project @ 1999-06-23 10:33:03 by simonmar]
simonmar [Wed, 23 Jun 1999 10:33:04 +0000 (10:33 +0000)]
[project @ 1999-06-23 10:33:03 by simonmar]
rename -ddump-rdr to -ddump-parsed, and make it work.

24 years ago[project @ 1999-06-22 16:32:42 by simonpj]
simonpj [Tue, 22 Jun 1999 16:32:42 +0000 (16:32 +0000)]
[project @ 1999-06-22 16:32:42 by simonpj]
Add HsBinds.isPragSig

24 years ago[project @ 1999-06-22 16:31:57 by simonpj]
simonpj [Tue, 22 Jun 1999 16:31:57 +0000 (16:31 +0000)]
[project @ 1999-06-22 16:31:57 by simonpj]
Do CSE right after a simplification pass; needs no-shadowing invariant

24 years ago[project @ 1999-06-22 16:31:19 by simonpj]
simonpj [Tue, 22 Jun 1999 16:31:20 +0000 (16:31 +0000)]
[project @ 1999-06-22 16:31:19 by simonpj]
Pragmas for default decls

24 years ago[project @ 1999-06-22 16:30:53 by simonpj]
simonpj [Tue, 22 Jun 1999 16:30:53 +0000 (16:30 +0000)]
[project @ 1999-06-22 16:30:53 by simonpj]
Add common sub-expression

24 years ago[project @ 1999-06-22 16:30:06 by simonpj]
simonpj [Tue, 22 Jun 1999 16:30:07 +0000 (16:30 +0000)]
[project @ 1999-06-22 16:30:06 by simonpj]
Remove exponential simplifier run-time bug

24 years ago[project @ 1999-06-22 07:59:54 by simonpj]
simonpj [Tue, 22 Jun 1999 08:00:45 +0000 (08:00 +0000)]
[project @ 1999-06-22 07:59:54 by simonpj]
Many small tuning changes

24 years ago[project @ 1999-06-21 13:12:43 by simonmar]
simonmar [Mon, 21 Jun 1999 13:12:43 +0000 (13:12 +0000)]
[project @ 1999-06-21 13:12:43 by simonmar]
Up heap size for Parser.hs a bit more.

24 years ago[project @ 1999-06-18 13:09:36 by simonmar]
simonmar [Fri, 18 Jun 1999 13:09:36 +0000 (13:09 +0000)]
[project @ 1999-06-18 13:09:36 by simonmar]
Up the heap/stack for Parser.hs a bit.

24 years ago[project @ 1999-06-18 13:06:33 by simonmar]
simonmar [Fri, 18 Jun 1999 13:06:33 +0000 (13:06 +0000)]
[project @ 1999-06-18 13:06:33 by simonmar]
Literate tidyups from Wolfram.

24 years ago[project @ 1999-06-18 13:02:13 by simonmar]
simonmar [Fri, 18 Jun 1999 13:02:13 +0000 (13:02 +0000)]
[project @ 1999-06-18 13:02:13 by simonmar]
Typo from Wolfram.

24 years ago[project @ 1999-06-17 09:51:16 by simonmar]
simonmar [Thu, 17 Jun 1999 09:51:31 +0000 (09:51 +0000)]
[project @ 1999-06-17 09:51:16 by simonmar]
Comment cleanup and literisation(?) by Wolfram Kahl <kahl@DI.Unipi.IT>.

24 years ago[project @ 1999-06-16 09:59:16 by simonmar]
simonmar [Wed, 16 Jun 1999 09:59:16 +0000 (09:59 +0000)]
[project @ 1999-06-16 09:59:16 by simonmar]
Urk, more fixes.  This thing *really* needs to be taken out and shot.

24 years ago[project @ 1999-06-16 09:48:00 by simonmar]
simonmar [Wed, 16 Jun 1999 09:48:00 +0000 (09:48 +0000)]
[project @ 1999-06-16 09:48:00 by simonmar]
Fix for default unregisterised builds.

24 years ago[project @ 1999-06-16 09:33:10 by simonmar]
simonmar [Wed, 16 Jun 1999 09:33:14 +0000 (09:33 +0000)]
[project @ 1999-06-16 09:33:10 by simonmar]
Make use of the $(GhcWithRegisterised) build flag from config.mk.  You
can now get an unregisterised build by *either*

- setting GhcWithRegisterised to NO in build.mk, or
- adding 'u' to GhcLibWays.

The former will make all compilations unregisterised, whereas the
latter will require a '-unreg' flag to be passed to the compiler to
get the unregisterised build.

24 years ago[project @ 1999-06-15 10:23:38 by simonmar]
simonmar [Tue, 15 Jun 1999 10:23:38 +0000 (10:23 +0000)]
[project @ 1999-06-15 10:23:38 by simonmar]
Test for Richard Reid's bug:  syntax C{} for constructing C with all fields set
to bottom.

24 years ago[project @ 1999-06-15 10:20:50 by simonmar]
simonmar [Tue, 15 Jun 1999 10:20:50 +0000 (10:20 +0000)]
[project @ 1999-06-15 10:20:50 by simonmar]
Allow the syntax C{} for building an unlabelled constructor C and
setting all of C's fields to bottom.  The Haskell report is a bit
vague on whether this is legal, but it turns out to be quite easy to
support.

24 years ago[project @ 1999-06-14 12:38:37 by simonmar]
simonmar [Mon, 14 Jun 1999 12:38:37 +0000 (12:38 +0000)]
[project @ 1999-06-14 12:38:37 by simonmar]
build Posix before Misc.

24 years ago[project @ 1999-06-14 11:17:12 by simonmar]
simonmar [Mon, 14 Jun 1999 11:17:12 +0000 (11:17 +0000)]
[project @ 1999-06-14 11:17:12 by simonmar]
Don't rely on bad implementation of 'sum', now that we don't have one
:)

24 years ago[project @ 1999-06-14 11:11:29 by simonmar]
simonmar [Mon, 14 Jun 1999 11:11:29 +0000 (11:11 +0000)]
[project @ 1999-06-14 11:11:29 by simonmar]
Allow ``...'' as argument of __casm.

24 years ago[project @ 1999-06-14 10:36:51 by simonmar]
simonmar [Mon, 14 Jun 1999 10:36:51 +0000 (10:36 +0000)]
[project @ 1999-06-14 10:36:51 by simonmar]
Don't chop off the last character of the buffer.

24 years ago[project @ 1999-06-14 10:34:50 by simonmar]
simonmar [Mon, 14 Jun 1999 10:34:50 +0000 (10:34 +0000)]
[project @ 1999-06-14 10:34:50 by simonmar]
tcrun004 uses existentials, needs -fglasgow-exts.

24 years ago[project @ 1999-06-14 10:05:19 by simonmar]
simonmar [Mon, 14 Jun 1999 10:05:19 +0000 (10:05 +0000)]
[project @ 1999-06-14 10:05:19 by simonmar]
Forgot 'forall' and 'foreign' as possible variable names.

24 years ago[project @ 1999-06-14 09:49:26 by simonmar]
simonmar [Mon, 14 Jun 1999 09:49:26 +0000 (09:49 +0000)]
[project @ 1999-06-14 09:49:26 by simonmar]
Oops, forgot that the memory returned from realloc could have moved.

24 years ago[project @ 1999-06-14 09:31:16 by simonpj]
simonpj [Mon, 14 Jun 1999 09:31:16 +0000 (09:31 +0000)]
[project @ 1999-06-14 09:31:16 by simonpj]
Add tcfail082.stderr

24 years ago[project @ 1999-06-14 09:29:01 by simonpj]
simonpj [Mon, 14 Jun 1999 09:29:07 +0000 (09:29 +0000)]
[project @ 1999-06-14 09:29:01 by simonpj]
Accept some test changes; add tcfail082, read021

24 years ago[project @ 1999-06-14 08:31:41 by sof]
sof [Mon, 14 Jun 1999 08:31:41 +0000 (08:31 +0000)]
[project @ 1999-06-14 08:31:41 by sof]
prescript wibble

24 years ago[project @ 1999-06-12 16:17:23 by keithw]
keithw [Sat, 12 Jun 1999 16:17:28 +0000 (16:17 +0000)]
[project @ 1999-06-12 16:17:23 by keithw]
K&R -> ANSI token pasting (ie, x##y for x/**/y)

24 years ago[project @ 1999-06-11 16:10:18 by simonmar]
simonmar [Fri, 11 Jun 1999 16:10:19 +0000 (16:10 +0000)]
[project @ 1999-06-11 16:10:18 by simonmar]
- add a test for non-parsing of strict newtype constructor fields
- other small fixes

24 years ago[project @ 1999-06-11 11:26:20 by simonpj]
simonpj [Fri, 11 Jun 1999 11:26:20 +0000 (11:26 +0000)]
[project @ 1999-06-11 11:26:20 by simonpj]
Missing case in collectTypedPatBinders; Andreas Marth bug report

24 years ago[project @ 1999-06-09 16:59:31 by simonmar]
simonmar [Wed, 9 Jun 1999 16:59:31 +0000 (16:59 +0000)]
[project @ 1999-06-09 16:59:31 by simonmar]
Add a few SPECIALISE/INLINE pragmas.

24 years ago[project @ 1999-06-09 16:14:55 by simonmar]
simonmar [Wed, 9 Jun 1999 16:14:55 +0000 (16:14 +0000)]
[project @ 1999-06-09 16:14:55 by simonmar]
- Recognise #-} as the end-of-pragma symbol even when -fglsagow-exts
  is off.  Certain pragmas are Haskell (like {-# OPTIMIZE #-} :-)
  and some aren't, so we're not really Haskell compliant here.

- Fix case-insensitive pragma matching.

24 years ago[project @ 1999-06-09 14:28:37 by simonmar]
simonmar [Wed, 9 Jun 1999 14:28:39 +0000 (14:28 +0000)]
[project @ 1999-06-09 14:28:37 by simonmar]
Move some code around to reduce the linkage between CgMonad and CgBindery,
and make the .hi-boot-5 file compatible with both 4.02 and 4.03.

24 years ago[project @ 1999-06-09 14:27:38 by simonmar]
simonmar [Wed, 9 Jun 1999 14:27:38 +0000 (14:27 +0000)]
[project @ 1999-06-09 14:27:38 by simonmar]
Remove debugging trace that sneaked in.

24 years ago[project @ 1999-06-09 11:23:20 by simonmar]
simonmar [Wed, 9 Jun 1999 11:23:20 +0000 (11:23 +0000)]
[project @ 1999-06-09 11:23:20 by simonmar]
Fix qvarid bug.

24 years ago[project @ 1999-06-09 10:42:14 by simonmar]
simonmar [Wed, 9 Jun 1999 10:42:14 +0000 (10:42 +0000)]
[project @ 1999-06-09 10:42:14 by simonmar]
Use ClosureInfo.hi-boot instead of ClosureInfo.hi (which might not be
built yet).

24 years ago[project @ 1999-06-09 09:35:54 by simonpj]
simonpj [Wed, 9 Jun 1999 09:36:25 +0000 (09:36 +0000)]
[project @ 1999-06-09 09:35:54 by simonpj]
Lots of small fixes to ghc/tests

24 years ago[project @ 1999-06-08 16:46:44 by simonpj]
simonpj [Tue, 8 Jun 1999 16:47:07 +0000 (16:47 +0000)]
[project @ 1999-06-08 16:46:44 by simonpj]
Small fixes, including a significant full-laziness bug in OccurAnal

24 years ago[project @ 1999-06-08 16:06:04 by simonmar]
simonmar [Tue, 8 Jun 1999 16:06:04 +0000 (16:06 +0000)]
[project @ 1999-06-08 16:06:04 by simonmar]
Update the comment for buildLivenessMask to match reality.

24 years ago[project @ 1999-06-08 15:56:44 by simonmar]
simonmar [Tue, 8 Jun 1999 15:56:48 +0000 (15:56 +0000)]
[project @ 1999-06-08 15:56:44 by simonmar]
Allow reserving of stack slots for non-pointer data (eg. cost
centres).  This means the previous hacks to keep the stack bitmaps
correct in the presence of cost centres are now unnecessary, and
case-of-case expressions will be compiled properly with profiling on.

24 years ago[project @ 1999-06-08 10:28:58 by simonmar]
simonmar [Tue, 8 Jun 1999 10:28:58 +0000 (10:28 +0000)]
[project @ 1999-06-08 10:28:58 by simonmar]
Pass -unreg for unregisterized builds.

24 years ago[project @ 1999-06-08 10:26:39 by simonmar]
simonmar [Tue, 8 Jun 1999 10:26:39 +0000 (10:26 +0000)]
[project @ 1999-06-08 10:26:39 by simonmar]
Fix ifdef INTERPRETER code fragment.

24 years ago[project @ 1999-06-08 09:06:26 by simonmar]
simonmar [Tue, 8 Jun 1999 09:06:26 +0000 (09:06 +0000)]
[project @ 1999-06-08 09:06:26 by simonmar]
Fix gratuitous duplication of libraries in the linker command line.

24 years ago[project @ 1999-06-08 08:43:54 by simonmar]
simonmar [Tue, 8 Jun 1999 08:43:54 +0000 (08:43 +0000)]
[project @ 1999-06-08 08:43:54 by simonmar]
- ignore case in pragma names

- add "NOTINLINE" as a possible spelling of "NOINLINE" for the
  grammatically challenged.

24 years ago[project @ 1999-06-07 17:22:31 by sewardj]
sewardj [Mon, 7 Jun 1999 17:22:54 +0000 (17:22 +0000)]
[project @ 1999-06-07 17:22:31 by sewardj]
Many changes needed to support loading of GHC compiled code.  The main
changes are to parser.y and interface.c to load .hi files and create
appropriate symbol table entries.  Also, interface.c has the
beginnings of and ELF loader/linker in it.

24 years ago[project @ 1999-06-07 16:53:08 by simonmar]
simonmar [Mon, 7 Jun 1999 16:53:09 +0000 (16:53 +0000)]
[project @ 1999-06-07 16:53:08 by simonmar]
Existential constructors NEVER WORKED!  You were JUST IMAGINING IT!

24 years ago[project @ 1999-06-07 14:58:40 by simonmar]
simonmar [Mon, 7 Jun 1999 14:58:40 +0000 (14:58 +0000)]
[project @ 1999-06-07 14:58:40 by simonmar]
Existential contexts on datatype declarations.

24 years ago[project @ 1999-06-07 10:12:52 by simonmar]
simonmar [Mon, 7 Jun 1999 10:12:52 +0000 (10:12 +0000)]
[project @ 1999-06-07 10:12:52 by simonmar]
Use $CC -E instead of gcc.

24 years ago[project @ 1999-06-04 13:04:17 by simonmar]
simonmar [Fri, 4 Jun 1999 13:04:17 +0000 (13:04 +0000)]
[project @ 1999-06-04 13:04:17 by simonmar]
Make the new file-slurping code work with 3.02.

24 years ago[project @ 1999-06-04 11:41:35 by simonmar]
simonmar [Fri, 4 Jun 1999 11:41:35 +0000 (11:41 +0000)]
[project @ 1999-06-04 11:41:35 by simonmar]
Omit ugen.

24 years ago[project @ 1999-06-03 14:44:23 by simonmar]
simonmar [Thu, 3 Jun 1999 14:44:23 +0000 (14:44 +0000)]
[project @ 1999-06-03 14:44:23 by simonmar]
When not profiling,  parse   `_scc_ "string" e'  as `(e)', not just `e'.

Rationale:  scc expressions are defined as extending as far to the
right as possible, and if we simply remove the _scc_ part the parse
looks awfully strange to the renamer which tends to fall over.

24 years ago[project @ 1999-06-03 12:46:02 by simonmar]
simonmar [Thu, 3 Jun 1999 12:46:04 +0000 (12:46 +0000)]
[project @ 1999-06-03 12:46:02 by simonmar]
Remove ugen; we don't need it anymore.

24 years ago[project @ 1999-06-03 08:25:43 by simonmar]
simonmar [Thu, 3 Jun 1999 08:25:43 +0000 (08:25 +0000)]
[project @ 1999-06-03 08:25:43 by simonmar]
Comment out some stuff we don't use.

24 years ago[project @ 1999-06-03 08:19:13 by simonmar]
simonmar [Thu, 3 Jun 1999 08:19:13 +0000 (08:19 +0000)]
[project @ 1999-06-03 08:19:13 by simonmar]
oops, better export it too.

24 years ago[project @ 1999-06-03 08:18:15 by simonmar]
simonmar [Thu, 3 Jun 1999 08:18:15 +0000 (08:18 +0000)]
[project @ 1999-06-03 08:18:15 by simonmar]
Fix bug in compat version of bracket.

24 years ago[project @ 1999-06-03 08:09:31 by sof]
sof [Thu, 3 Jun 1999 08:09:31 +0000 (08:09 +0000)]
[project @ 1999-06-03 08:09:31 by sof]
suppress needless warning

24 years ago[project @ 1999-06-03 07:40:39 by sof]
sof [Thu, 3 Jun 1999 07:40:39 +0000 (07:40 +0000)]
[project @ 1999-06-03 07:40:39 by sof]
Added rts_evalLazyIO

24 years ago[project @ 1999-06-03 07:12:10 by sof]
sof [Thu, 3 Jun 1999 07:12:10 +0000 (07:12 +0000)]
[project @ 1999-06-03 07:12:10 by sof]
DLL install support

24 years ago[project @ 1999-06-02 16:05:56 by simonmar]
simonmar [Wed, 2 Jun 1999 16:05:56 +0000 (16:05 +0000)]
[project @ 1999-06-02 16:05:56 by simonmar]
Small grammar correction: 'x @ Rec{..}' should parse as 'x @
(Rec{..})'.

24 years ago[project @ 1999-06-02 15:50:25 by simonmar]
simonmar [Wed, 2 Jun 1999 15:50:25 +0000 (15:50 +0000)]
[project @ 1999-06-02 15:50:25 by simonmar]
- parse _scc_ expressions
- give a proper error on illegal characters in the lexer.

24 years ago[project @ 1999-06-02 15:14:57 by simonmar]
simonmar [Wed, 2 Jun 1999 15:14:57 +0000 (15:14 +0000)]
[project @ 1999-06-02 15:14:57 by simonmar]
^M should be a space character.

24 years ago[project @ 1999-06-02 14:42:43 by simonmar]
simonmar [Wed, 2 Jun 1999 14:42:43 +0000 (14:42 +0000)]
[project @ 1999-06-02 14:42:43 by simonmar]
Fix tyvars field of RuleDecls.

24 years ago[project @ 1999-06-02 14:18:42 by simonmar]
simonmar [Wed, 2 Jun 1999 14:18:42 +0000 (14:18 +0000)]
[project @ 1999-06-02 14:18:42 by simonmar]
Don't pass strange hsp-type arguments anymore.

24 years ago[project @ 1999-06-01 16:40:41 by simonmar]
simonmar [Tue, 1 Jun 1999 16:41:09 +0000 (16:41 +0000)]
[project @ 1999-06-01 16:40:41 by simonmar]
This commit replaces the old yacc parser with a Happy-generated one.
Notes:

- The generated .hs file is *big*.  Best to use a recent
  version of Happy, and even better to add the -c flag
  to use unsafeCoerce# with ghc (versions 4.02+ please).

- The lexer has grown all sorts of unsightly growths and
  should be put down as soon as possible.

- Parse errors may result in strange diagnostics.  I'm looking
  into this.

- HsSyn now contains a few extra constructors due to the way
  patterns are parsed as expressions in the parser.

- The layout rule is implemented according to the Haskell
  report.  I found a couple of places in the libraries where
  we previously weren't adhering to this - in particular the
  rule about "nested contexts must be more indented than
  outer contexts".  The rule is necessary to disambiguate
  in the presence of empty declaration lists.

24 years ago[project @ 1999-06-01 16:15:42 by simonmar]
simonmar [Tue, 1 Jun 1999 16:16:37 +0000 (16:16 +0000)]
[project @ 1999-06-01 16:15:42 by simonmar]
Remove illegal use of layout.

24 years ago[project @ 1999-06-01 09:56:22 by simonmar]
simonmar [Tue, 1 Jun 1999 09:56:22 +0000 (09:56 +0000)]
[project @ 1999-06-01 09:56:22 by simonmar]
"oops"

24 years ago[project @ 1999-05-28 19:24:26 by simonpj]
simonpj [Fri, 28 May 1999 19:24:42 +0000 (19:24 +0000)]
[project @ 1999-05-28 19:24:26 by simonpj]
Enable rules for simplification of SeqOp

Fix a related bug in WwLib that made it look as if the binder
in a case expression was being demanded, when it wasn't.

24 years ago[project @ 1999-05-28 19:21:34 by simonpj]
simonpj [Fri, 28 May 1999 19:21:34 +0000 (19:21 +0000)]
[project @ 1999-05-28 19:21:34 by simonpj]
Make the default instance for Ord such that it suffices to define <=, as claimed

24 years ago[project @ 1999-05-28 19:20:43 by simonpj]
simonpj [Fri, 28 May 1999 19:20:43 +0000 (19:20 +0000)]
[project @ 1999-05-28 19:20:43 by simonpj]
Yet more fixes to the dreaded Enum instances

24 years ago[project @ 1999-05-28 19:20:04 by simonpj]
simonpj [Fri, 28 May 1999 19:20:04 +0000 (19:20 +0000)]
[project @ 1999-05-28 19:20:04 by simonpj]
Make Ix instances more inlinable

24 years ago[project @ 1999-05-28 19:19:20 by simonpj]
simonpj [Fri, 28 May 1999 19:19:20 +0000 (19:19 +0000)]
[project @ 1999-05-28 19:19:20 by simonpj]
Make the Enum Integer instance deforestable

24 years ago[project @ 1999-05-28 19:18:52 by simonpj]
simonpj [Fri, 28 May 1999 19:18:52 +0000 (19:18 +0000)]
[project @ 1999-05-28 19:18:52 by simonpj]
Fix a killer bug in the RULES for 'all' and 'any'
that simply made them wrong, with various obscure
consequences.

24 years ago[project @ 1999-05-28 13:32:50 by simonmar]
simonmar [Fri, 28 May 1999 13:32:50 +0000 (13:32 +0000)]
[project @ 1999-05-28 13:32:50 by simonmar]
Fixes for case-of-case and let-no-escape.

24 years ago[project @ 1999-05-28 13:20:10 by sof]
sof [Fri, 28 May 1999 13:20:10 +0000 (13:20 +0000)]
[project @ 1999-05-28 13:20:10 by sof]
semi-automatic support for indexing

24 years ago[project @ 1999-05-28 08:08:44 by simonpj]
simonpj [Fri, 28 May 1999 08:08:44 +0000 (08:08 +0000)]
[project @ 1999-05-28 08:08:44 by simonpj]
Minor wibble to do with module names that contain a Z

24 years ago[project @ 1999-05-28 08:07:52 by simonpj]
simonpj [Fri, 28 May 1999 08:07:54 +0000 (08:07 +0000)]
[project @ 1999-05-28 08:07:52 by simonpj]
Make the renamer so that the class ops on the LEFT HAND SIDE
of the bindings of an instance decl count as free variables
of that declaration.  E.g.

instance Foo [a] where
  op x  = ...
  bop y = ...

Here, 'op' and 'bop' are now counted as free variables of
the decl.

This is vital, because the class decl for Foo might be imported,
and look like this:

class Foo a where
  op  :: a -> S
  bop :: T -> a

and these might happen to be the only mentions of S and T
in the program.  Then we need to treat S and T as instance
gates for the purpose of hauling in further instance decls,
and the Right Way to do that is to announce that 'op' and
'bop' have been mentioned.

I also removed the (now obselete) rn_omit field in the
monad.

24 years ago[project @ 1999-05-26 16:54:22 by simonpj]
simonpj [Wed, 26 May 1999 16:54:26 +0000 (16:54 +0000)]
[project @ 1999-05-26 16:54:22 by simonpj]
Minor improvements in error messages

24 years ago[project @ 1999-05-26 14:12:07 by simonmar]
simonmar [Wed, 26 May 1999 14:12:32 +0000 (14:12 +0000)]
[project @ 1999-05-26 14:12:07 by simonmar]
Several bugfixes (from SLPJ's tree).

25 years ago[project @ 1999-05-24 13:58:26 by simonmar]
simonmar [Mon, 24 May 1999 13:58:26 +0000 (13:58 +0000)]
[project @ 1999-05-24 13:58:26 by simonmar]
Remove dangling 'where'.

25 years ago[project @ 1999-05-24 10:58:09 by simonmar]
simonmar [Mon, 24 May 1999 10:58:09 +0000 (10:58 +0000)]
[project @ 1999-05-24 10:58:09 by simonmar]
stg_gc_noregs should leave the return address on the stack (it's a
case alternative).

25 years ago[project @ 1999-05-21 14:48:52 by sof]
sof [Fri, 21 May 1999 14:48:52 +0000 (14:48 +0000)]
[project @ 1999-05-21 14:48:52 by sof]
documented -no-hs-main option

25 years ago[project @ 1999-05-21 14:46:19 by sof]
sof [Fri, 21 May 1999 14:46:21 +0000 (14:46 +0000)]
[project @ 1999-05-21 14:46:19 by sof]
Made rts_evalIO() stricter, i.e.,

   rts_evalIO( action );

will now essentially cause `action' to be applied
to the following (imaginary) defn of `evalIO':

    evalIO :: IO a -> IO a
    evalIO action = action >>= \ x -> x `seq` return x

instead of just

    evalIO :: IO a -> IO a
    evalIO action = action >>= \ x -> return x

The old, lazier behaviour is now available via rts_evalLazyIO().

25 years ago[project @ 1999-05-21 14:37:12 by sof]
sof [Fri, 21 May 1999 14:37:12 +0000 (14:37 +0000)]
[project @ 1999-05-21 14:37:12 by sof]
Improved precision of LOOKS_LIKE_PTR()

25 years ago[project @ 1999-05-21 14:28:32 by sof]
sof [Fri, 21 May 1999 14:28:32 +0000 (14:28 +0000)]
[project @ 1999-05-21 14:28:32 by sof]
Don't perform repeated shutdowns

25 years ago[project @ 1999-05-21 13:37:07 by simonmar]
simonmar [Fri, 21 May 1999 13:37:08 +0000 (13:37 +0000)]
[project @ 1999-05-21 13:37:07 by simonmar]
Misc patches from SLPJ.

25 years ago[project @ 1999-05-21 12:52:28 by simonmar]
simonmar [Fri, 21 May 1999 12:52:51 +0000 (12:52 +0000)]
[project @ 1999-05-21 12:52:28 by simonmar]
A bunch of patches from SLPJ to fix various things.

25 years ago[project @ 1999-05-20 10:23:42 by simonmar]
simonmar [Thu, 20 May 1999 10:23:43 +0000 (10:23 +0000)]
[project @ 1999-05-20 10:23:42 by simonmar]
+RTS -s<file> now gives "summary" statistics only (i.e. without the per-gc
stat lines).

25 years ago[project @ 1999-05-18 16:38:23 by simonpj]
simonpj [Tue, 18 May 1999 16:38:24 +0000 (16:38 +0000)]
[project @ 1999-05-18 16:38:23 by simonpj]
More small changes to make Simon's big commit work

25 years ago[project @ 1999-05-18 16:10:59 by simonpj]
simonpj [Tue, 18 May 1999 16:11:00 +0000 (16:11 +0000)]
[project @ 1999-05-18 16:10:59 by simonpj]
Small changes to make Simon's big commit work

25 years ago[project @ 1999-05-18 15:41:31 by simonpj]
simonpj [Tue, 18 May 1999 15:41:32 +0000 (15:41 +0000)]
[project @ 1999-05-18 15:41:31 by simonpj]
Documentation for rewrite rules.

Some stuff in (a) glasgow exts
      (b) debugging

Doubtless incomplete, and since I can't build the
docs on (my) NT box, I don't even know if my changes
are syntactically correct!

25 years ago[project @ 1999-05-18 15:20:51 by simonpj]
simonpj [Tue, 18 May 1999 15:20:51 +0000 (15:20 +0000)]
[project @ 1999-05-18 15:20:51 by simonpj]
Simon's Prelude changes
~~~~~~~~~~~~~~~~~~~~~~~

[The real commit preceded this, but had the stupid message "msg_prel"
 because I used "cvs commit -m" instead of "cvs commit -F"]

Prelude is split into more modules
new are: PrelEnum, PrelShow, PrelNum
removed: PrelBounded (all in PrelEnum now)
 PrelEither  (all in PrelMaybe now)

There are also a lot of RULES, of course.

25 years ago[project @ 1999-05-18 15:19:15 by simonpj]
simonpj [Tue, 18 May 1999 15:19:15 +0000 (15:19 +0000)]
[project @ 1999-05-18 15:19:15 by simonpj]
Renamer changes
~~~~~~~~~~~~~~~

[The real commit preceded this, but had the stupid message "msg_rn"
 because I used "cvs commit -m" instead of "cvs commit -F"]

Fairly substantial changes to the renamer:

* opt_PruneTyDecls is gone, gone, gone. Hurrah.  Ditto the 'deferred
  data decls' which was a bug farm.

  Instead, the compiler slurps in the transitive closure of all type
  declarations.  It is nevertheless still parsimonious about slurping
  in instance decls and rewrite rules.

* The renamer now uses the usage information stored in each interface
  file to figure out whether to look for A.hi or A.hi-boot when looking
  for a declaration for A.f (say).

* Because of the above, there are no "A!f" symbols in interface files any more.
  However, the header of the interface file does contain a "!" to indicate
  that the mdoule contains "orphan" instance decls or rewrite rules.
__interface Foo 3 ! 403 where

  Likewise, the usage info contains a "!" to indicate that the module
  mentioned has orphans:
import Foo 3 ! :: a 1 b 7 ;

* The renamer now only reads an interface looking for fixities if it
  finds an occurrence of an operator from that module.  (Previously
  it pessimistically read the home modlese of all in-scope variables.)

* Some flags have changed to more consistent names:
-ddump-rn-stats (was -dshow-rn-stats)
-ddump-rn-trace (was -dshow-rn-trace)

* Exports now come before imports in interface files.  (This was an
  un-forced change.)

* The usage info is now explicit when a module imports the whole of another:
import M 3 ; -- Imports the whole of M
import M 3 :: a 2 b 7 ; -- Imports M.a, M.b
import M 3 :: ; -- Imports nothing from M
  The last one is still vital to record that this module depends indirectly
  on M, even though it didn't use anything from M directly.

* The renamer warns if you import {- SOURCE -} unnecessarily.

25 years ago[project @ 1999-05-18 15:17:58 by simonpj]
simonpj [Tue, 18 May 1999 15:17:58 +0000 (15:17 +0000)]
[project @ 1999-05-18 15:17:58 by simonpj]
SMALL TYPECHECKER FIXES

[The real commit preceded this, but had the stupid message "RULES-NOTES"
 because I used "cvs commit -m" instead of "cvs commit -F"]

1. Allow type synonyms with kind other than '*'

2. Check that the default methods declared in a class decl are
   from that class decl

25 years ago[project @ 1999-05-18 15:16:33 by simonpj]
simonpj [Tue, 18 May 1999 15:16:33 +0000 (15:16 +0000)]
[project @ 1999-05-18 15:16:33 by simonpj]
SIMON's MASSIVE COMMIT

[The real commit preceded this, but had the stupid message "RULES-NOTES"
 because I used "cvs commit -m" instead of "cvs commit -F"]

Module reorganisation
~~~~~~~~~~~~~~~~~~~~~~~~~~~
coreSyn/CoreFVs replaces coreSyn/FreeVars
coreSyn/CoreTidy is new (was code in simplCore/SimplCore)
coreSyn/Subst  is new (implements substitution incl
dealing with name clashes
main/CodeOutput is new (was gruesome code in main/Main)
parser/rulevar.ugn Ugen file for rules
prelude/ThinAir.lhs is new (defns for "thin air" ids; was in
prelude/PrelVals)
specialise/Rules is new (implements rewrite rule matching)
typecheck/TcRules is new (typechecks rewrite rules)
types/InstEnv is new (implements the instance env in Class;

replaces SpecEnv)
specialise/SpecEnv has gone
simplCore/MagicUFs has gone (hurrah)

Rewrite rules
~~~~~~~~~~~~~
This major commit adds the ability to specify transformation rules.

   E.g.

   {-# RULES
   forall f,g,xs. map f (map g xs) = map (f . g) xs
   #-}

The rules are typechecked, and survive across separate compilation.

* specialise/SpecEnv.lhs has gone, replaced by specialise/Rules.lhs.
  Rules.lhs implements transformation-rule matching.

* Info about class instances is no longer held in a SpecEnv in the class;
  instead classes have their own thing, typecheck/InstEnv.lhs

* Specialisations are held in list of rules, held inside an Id.
  So although specialisations arise from SPECIALISE pragmas and
  uses of overloaded functions, they are still expressed as transformation
  rules.  However these rules are held inside the relevant Id, as
  before.  The RULES ones are held globally.

Cloning
~~~~~~~
I've removed -fplease-clone as a simplifier flag.  It complicates the
plumbing quite a bit.  The simplifier now simply ensures that there's
no shadowing in its output.

It's up to other passes to solve their own cloning problems.  It turned
out to be easy:
- SetLevels clones where necessary, so that floating out
  doesn't cause a problem.

- CoreToStg clones so that the code generator can use uniques
  for labels

Instead, the simplifier clones by using VarSet.uniqAway to find a unique
that doesn't conflict with any that are in scope.  If you say -dppr-debug
you get a trace of how many times uniqAway had to loop before finding a
suitable unique.  It's too much at present; something to improve.

Flags
~~~~~
* I have stopped -fcase-of-case and friends being 'per-simplfication'
  flags, and instead made them global 'opt_' things.  This is simpler
  and more efficient, and the extra expressiveness was never used anyway.

* -dsimplifier-stats has been renamed to -ddump-simpl-stats
  and prints much more coherent info than before.
  If you add -dppr-debug you get much more detailed information.

* -ddump-inlinings is more or less as before, but a bit improved.

Inlining and inline phase
~~~~~~~~~~~~~~~~~~~~~~~~~
I've moved the crucial inline-control function (now called callSiteInline)
to CoreUnfold from Simplify, so that all the key inlining decisions are
made in CoreUnfold.

I've removed IWantToBeINLINEd as an InlinePragInfo on an Id.  Instead, I've
added a new Note on expressions, InlineMe.  This is much more robust to
program transformations than the old way.  Essentially, an expression
wrapped in an InlineMe note looks small to the inliner.

In order to prevent variables on the LHS of transformation rules being inlined
prematurely, the simplifier maintains a "black list" of variables that should
not be inlined.  Before each run of the simplifier, it constructs its black
list based on the "inline phase number", controlled by the per-simplification
flag -finline-phase1, -finline-phase2 etc.  Details of what happens in the
different phases are defined by the function CoreUnfold.blackListed.

Function and primop arguments
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I've improved the way that the simplifier deals with strict arguments of functions
and primops.  These are now both dealt with by Simplify.prepareArgs.  As as result
strict arguments are no longer case-ifyd in Core.  That happens in the core-to-stg
transformation. This is important so that transformation rules work easily.
We want to see foldr k z (build g)
and not case build g of { x -> foldr k z x }

CoreToStg now takes accouunt of the strictness of functions and primops, to
ensure that strict arguments are done with case.

Cheap primops
~~~~~~~~~~~~~
Primops that are cheap and can't fail (i.e not divide!) reply True to primOpOkForSpeculation.
Applications of such primops are now allowed to appear in lets (rather than cases),
so that they are easier to float.  They are honorary lets, in the sense that they can
float out or in without damage.  Again core-to-stg turns them into cases.

Class op selectors
~~~~~~~~~~~~~~~~~~
Generate bindings for class-op selectors.  The immediate reason for doing this
is so we can write transformation rules involving them; black-listing won't
work if they have to be inlined!  The longer-term reason is because Hugs will
need these bindings. Also there's no point in inling them if the dictionary
is lambda bound.

Simplifier
~~~~~~~~~~
I've made a number of detailed changes to the innards of the simplifier.
Result is (a bit) less code, and fewer iterations.  Only the biggest modules
provoke the "more than 4 iterations" complaint.

... And tons of other minor stuff ...

25 years ago[project @ 1999-05-18 15:03:54 by simonpj]
simonpj [Tue, 18 May 1999 15:05:18 +0000 (15:05 +0000)]
[project @ 1999-05-18 15:03:54 by simonpj]
RULES-NOTES

25 years ago[project @ 1999-05-18 15:03:53 by simonpj]
simonpj [Tue, 18 May 1999 15:03:53 +0000 (15:03 +0000)]
[project @ 1999-05-18 15:03:53 by simonpj]
Driver updates for Simons main commit; rewrite rules and flaggery

25 years ago[project @ 1999-05-18 15:03:33 by simonpj]
simonpj [Tue, 18 May 1999 15:03:51 +0000 (15:03 +0000)]
[project @ 1999-05-18 15:03:33 by simonpj]
RULES-NOTES

25 years ago[project @ 1999-05-18 14:59:04 by simonpj]
simonpj [Tue, 18 May 1999 14:59:24 +0000 (14:59 +0000)]
[project @ 1999-05-18 14:59:04 by simonpj]
../compiler/msg_prel