keithw [Tue, 11 May 1999 16:42:54 +0000 (16:42 +0000)]
[project @ 1999-05-11 16:42:54 by keithw]
(this is number 6 of 9 commits to be applied together)
It is useful to know the usage of a lambda outside the usage
inference (specifically, in the simplifier); thus as a temporary
hack to make this information available without undue modification
to the rest of the compiler, the information is copied into the
IdInfo field of the binder.
The new information is LBVarInfo, which can be either NoLBVarInfo or
IsOneShotLambda, corresponding to __m/no info and __o respectively.
LBVarInfo is not intended to be printed in interface files; to
enforce this ppLBVarInfo is defined to print nothing.
keithw [Tue, 11 May 1999 16:42:32 +0000 (16:42 +0000)]
[project @ 1999-05-11 16:42:29 by keithw]
(this is number 5b of 9 commits to be applied together)
The major purpose of this commit is to introduce usage information
and usage analysis into the compiler, per the paper _Once Upon a
Polymorphic Type_ (Keith Wansbrough and Simon Peyton Jones, POPL'99,
and Glasgow TR-1998-19).
An analysis is provided that annotates a Core program with optimal
usage annotations. This analysis is performed by -fusagesp
(=CoreDoUSPInf), and requires -fusagesp-on (=opt_UsageSPOn). This
latter performs an analysis in tidyCorePgm, immediately before
CoreToStg is done. The driver flag -fusagesp currently provides hsc
with -fusagesp-on, and if -O is on does a single -fusagesp early on
in the Core-to-Core sequence. Please change this as desired.
*NB*: For now, -fusagesp with -O requires -fno-specialise. Sorry.
The flags -ddump-usagesp (=opt_D_dump_usagesp) and -dusagesp-lint
(=opt_DoUSPLinting) (also -dnousagesp-lint to the driver) have been
added and are documented in the User Guide.
keithw [Tue, 11 May 1999 16:41:59 +0000 (16:41 +0000)]
[project @ 1999-05-11 16:41:56 by keithw]
(this is number 5a of 9 commits to be applied together)
The major purpose of this commit is to introduce usage information
and usage analysis into the compiler, per the paper _Once Upon a
Polymorphic Type_ (Keith Wansbrough and Simon Peyton Jones, POPL'99,
and Glasgow TR-1998-19).
An analysis is provided that annotates a Core program with optimal
usage annotations. This analysis is performed by -fusagesp
(=CoreDoUSPInf), and requires -fusagesp-on (=opt_UsageSPOn). This
latter performs an analysis in tidyCorePgm, immediately before
CoreToStg is done. The driver flag -fusagesp currently provides hsc
with -fusagesp-on, and if -O is on does a single -fusagesp early on
in the Core-to-Core sequence. Please change this as desired.
*NB*: For now, -fusagesp with -O requires -fno-specialise. Sorry.
The flags -ddump-usagesp (=opt_D_dump_usagesp) and -dusagesp-lint
(=opt_DoUSPLinting) (also -dnousagesp-lint to the driver) have been
added and are documented in the User Guide.
keithw [Tue, 11 May 1999 16:38:04 +0000 (16:38 +0000)]
[project @ 1999-05-11 16:37:29 by keithw]
(this is number 4 of 9 commits to be applied together)
The major purpose of this commit is to introduce usage information
and usage analysis into the compiler, per the paper _Once Upon a
Polymorphic Type_ (Keith Wansbrough and Simon Peyton Jones, POPL'99,
and Glasgow TR-1998-19).
Usage information has been added to types, in the form of a new kind
of NoteTy: (UsgNote UsageAnn(UsOnce|UsMany|UsVar UVar)). Usages
print as __o (once), __m (many, usually omitted), or (not in
interface files) __uvxxxx. Usage annotations should only appear at
certain places in a type (see the paper). The `default' annotation
is __m, and so an omitted annotation implies __m. Utility functions
for handling usage annotations are provided in Type.
If the compiler is built with -DUSMANY (a flag intended for use in
debugging by KSW only), __m are *required* and may not be omitted.
The major constraint is that type arguments (eg to mkAppTy) must be
unannotated on top. To maintain this invariant, many functions
required the insertion of Type.unUsgTy (removing annot from top of a
type) or UsageSPUtils.unannotTy (removing all annotations from a
type). A function returning usage-annotated types for primops has
been added to PrimOp.
A new kind of Note, (TermUsg UsageAnn), has been added to annotate
Terms. This note is *not* printed in interface files, and for the
present does not escape the internals of the usage inference engine.
keithw [Tue, 11 May 1999 16:33:35 +0000 (16:33 +0000)]
[project @ 1999-05-11 16:33:35 by keithw]
(this is number 3 of 9 commits to be applied together)
Following Haskell 98, if the module declaration is omitted it now
defaults to "module Main(main) where", rather than the previous
default of exporting everything.
Furthermore, "module Main where" also defaults to exporting just
Main.main rather than everything in the module (modules other than
Main behave as normal). This permits the usage inference to give
better results for the Main module, since exported functions get
worse types than nonexported functions.
keithw [Tue, 11 May 1999 16:33:11 +0000 (16:33 +0000)]
[project @ 1999-05-11 16:33:06 by keithw]
(this is number 2 of 9 commits to be applied together)
Type constructors now carry information on the variance (positive
and/or negative) of each of their type arguments (tyConArgVrcs).
This information is provided for primitive types and computed for
others. If a tycon has been imported abstractly and this variance
information is subsequently demanded, we make a pessimistic
assumption and warn that -fno-prune-tydecls should be used.
keithw [Tue, 11 May 1999 16:31:33 +0000 (16:31 +0000)]
[project @ 1999-05-11 16:31:33 by keithw]
(this is number 1 of 9 commits to be applied together)
Dictionaries now appear in interface files explicitly, rather than
as contexts: __forall [a] => {Show a} -> ... rather than __forall
[a] {Show a} => ... .
sof [Tue, 11 May 1999 14:38:47 +0000 (14:38 +0000)]
[project @ 1999-05-11 14:38:47 by sof]
myThreadId doc'ed
sof [Tue, 11 May 1999 09:15:19 +0000 (09:15 +0000)]
[project @ 1999-05-11 09:15:19 by sof]
couple of fixes (courtesy of MPJ)
sof [Mon, 10 May 1999 19:49:16 +0000 (19:49 +0000)]
[project @ 1999-05-10 19:49:15 by sof]
minor updates
sof [Mon, 10 May 1999 17:54:00 +0000 (17:54 +0000)]
[project @ 1999-05-10 17:53:59 by sof]
Assuming that the TC sometime in the future will want to start looking
at infix decls (right, Simon?), the renamer currently passes them on
rather than filter.
Couple of TC tweaks to have it non-burpingly handle such FixSigs
inside class decls.
sof [Mon, 10 May 1999 16:55:43 +0000 (16:55 +0000)]
[project @ 1999-05-10 16:55:43 by sof]
The implementation of hGetLine, as given in the report, doesn't handle
partial lines on unbuffered handles that well (not at all, as it turns
out). Fixed.
sof [Mon, 10 May 1999 16:52:11 +0000 (16:52 +0000)]
[project @ 1999-05-10 16:52:10 by sof]
PrelHandle.withHandle: don't catch IO exceptions.
sof [Mon, 10 May 1999 13:13:18 +0000 (13:13 +0000)]
[project @ 1999-05-10 13:13:18 by sof]
yet another bugfix to the 'deriving Read' code
simonm [Mon, 10 May 1999 10:12:28 +0000 (10:12 +0000)]
[project @ 1999-05-10 10:12:25 by simonm]
Test fixes.
sof [Mon, 10 May 1999 10:06:24 +0000 (10:06 +0000)]
[project @ 1999-05-10 10:06:24 by sof]
oops, args to startupHaskell() wrong way around
sof [Mon, 10 May 1999 09:56:50 +0000 (09:56 +0000)]
[project @ 1999-05-10 09:56:50 by sof]
extend cleanup to integer2Word#
simonm [Mon, 10 May 1999 09:50:49 +0000 (09:50 +0000)]
[project @ 1999-05-10 09:50:49 by simonm]
integer2Int# take 4: cleaned up a little.
sof [Mon, 10 May 1999 09:26:41 +0000 (09:26 +0000)]
[project @ 1999-05-10 09:26:41 by sof]
integer2Int#, take 3
sof [Mon, 10 May 1999 08:23:57 +0000 (08:23 +0000)]
[project @ 1999-05-10 08:23:55 by sof]
Added a DllMain() which starts up RTS upon DLL load.
sof [Fri, 7 May 1999 15:42:49 +0000 (15:42 +0000)]
[project @ 1999-05-07 15:42:49 by sof]
integer2Int# again: don't flip sign unless outside [minInt,maxInt]
simonm [Fri, 7 May 1999 14:52:53 +0000 (14:52 +0000)]
[project @ 1999-05-07 14:52:49 by simonm]
some test updates
simonm [Fri, 7 May 1999 13:44:00 +0000 (13:44 +0000)]
[project @ 1999-05-07 13:44:00 by simonm]
Fix bug in tagToEnum#: if the amode of the tag overlapped with node,
bogus code would be generated. Now load the tag into a temporary
before doing the table lookup.
sof [Fri, 7 May 1999 13:41:14 +0000 (13:41 +0000)]
[project @ 1999-05-07 13:41:14 by sof]
Fixed two showstopping bugs in 'deriving Read' code (mea culpa).
simonm [Fri, 7 May 1999 11:31:12 +0000 (11:31 +0000)]
[project @ 1999-05-07 11:31:12 by simonm]
Don't try to make a tag2con function if we're deriving Ix on a
single-constructor datatype (it isn't needed, and will probably be
type-incorrect anyway).
simonm [Fri, 7 May 1999 11:16:37 +0000 (11:16 +0000)]
[project @ 1999-05-07 11:16:37 by simonm]
Ignore exceptions in the spawned threads.
simonm [Fri, 7 May 1999 11:10:45 +0000 (11:10 +0000)]
[project @ 1999-05-07 11:10:45 by simonm]
Don't test for CLOSURE_SHOULD_SPARK in forkzh, because forkzh's argument
is an IO action and we're about to apply it to the state anyway.
simonm [Thu, 6 May 1999 08:41:10 +0000 (08:41 +0000)]
[project @ 1999-05-06 08:41:10 by simonm]
s/finalis/finaliz/g
sof [Thu, 6 May 1999 08:32:51 +0000 (08:32 +0000)]
[project @ 1999-05-06 08:32:51 by sof]
Add -lwsock32 to linker command line, if needs be
keithw [Wed, 5 May 1999 11:39:09 +0000 (11:39 +0000)]
[project @ 1999-05-05 11:39:09 by keithw]
Add a space to panic message from zipWith*Equal.
sof [Wed, 5 May 1999 10:48:06 +0000 (10:48 +0000)]
[project @ 1999-05-05 10:48:03 by sof]
DLL config added
sof [Wed, 5 May 1999 10:39:25 +0000 (10:39 +0000)]
[project @ 1999-05-05 10:39:25 by sof]
Improved the splitting of the std. generator
sof [Wed, 5 May 1999 10:36:31 +0000 (10:36 +0000)]
[project @ 1999-05-05 10:36:29 by sof]
switch over to using Winsock on the _WIN32 side
sof [Wed, 5 May 1999 10:34:55 +0000 (10:34 +0000)]
[project @ 1999-05-05 10:34:53 by sof]
stubs for starting & stopping Winsock
sof [Wed, 5 May 1999 10:33:17 +0000 (10:33 +0000)]
[project @ 1999-05-05 10:33:13 by sof]
Winsock support
sof [Wed, 5 May 1999 08:35:02 +0000 (08:35 +0000)]
[project @ 1999-05-05 08:35:02 by sof]
Empty rec pattern test
sof [Wed, 5 May 1999 08:31:00 +0000 (08:31 +0000)]
[project @ 1999-05-05 08:31:00 by sof]
Allow record pattern "F{}" on any old constructor, not just with those
that have labelled fields.
sof [Tue, 4 May 1999 19:31:53 +0000 (19:31 +0000)]
[project @ 1999-05-04 19:31:51 by sof]
Check for presence of winsock.h
sof [Tue, 4 May 1999 10:19:19 +0000 (10:19 +0000)]
[project @ 1999-05-04 10:19:14 by sof]
Misc tweaks to Win32 DLL setup
sof [Tue, 4 May 1999 10:16:51 +0000 (10:16 +0000)]
[project @ 1999-05-04 10:16:51 by sof]
Module defn files for RTS + the bits that the RTS need from the Prelude
sof [Tue, 4 May 1999 08:58:18 +0000 (08:58 +0000)]
[project @ 1999-05-04 08:58:18 by sof]
integer2Int# isn't sign preserving any longer, but modulo maxBound
sof [Tue, 4 May 1999 08:52:23 +0000 (08:52 +0000)]
[project @ 1999-05-04 08:52:22 by sof]
Moved DLL-related macros out of Stg.h and into separate .h file
sof [Tue, 4 May 1999 08:50:43 +0000 (08:50 +0000)]
[project @ 1999-05-04 08:50:43 by sof]
Removed last vestiges of PrelBase_Bool_closure_tbl (yes\!)
sof [Tue, 4 May 1999 08:47:32 +0000 (08:47 +0000)]
[project @ 1999-05-04 08:47:32 by sof]
* Added option --mk-dll (and -optdll<foo>) to ease the creation of DLLs containing
ghc-compiled code (see docs for details).
* Fixed bug which caused non-std ways to pick up the std way's interface files
when compiling the prelude.
sof [Tue, 4 May 1999 08:40:07 +0000 (08:40 +0000)]
[project @ 1999-05-04 08:40:07 by sof]
a rule or two for building DLLs
sof [Tue, 4 May 1999 08:38:53 +0000 (08:38 +0000)]
[project @ 1999-05-04 08:38:53 by sof]
Added support for dllwrap options
sof [Tue, 4 May 1999 08:37:55 +0000 (08:37 +0000)]
[project @ 1999-05-04 08:37:55 by sof]
added a new way (dll) to use when building Prelude DLLs
sof [Tue, 4 May 1999 08:36:30 +0000 (08:36 +0000)]
[project @ 1999-05-04 08:36:29 by sof]
added HAVE_WIN32_DLL_SUPPORT
sof [Tue, 4 May 1999 08:35:12 +0000 (08:35 +0000)]
[project @ 1999-05-04 08:35:12 by sof]
New option: --enable-win32-dlls
sof [Tue, 4 May 1999 08:31:53 +0000 (08:31 +0000)]
[project @ 1999-05-04 08:31:51 by sof]
Updated _casm_ example
sof [Tue, 4 May 1999 08:30:44 +0000 (08:30 +0000)]
[project @ 1999-05-04 08:30:44 by sof]
a howto on Win32 DLLs
sof [Mon, 3 May 1999 13:22:29 +0000 (13:22 +0000)]
[project @ 1999-05-03 13:22:29 by sof]
Win32'ified
simonpj [Thu, 29 Apr 1999 12:21:50 +0000 (12:21 +0000)]
[project @ 1999-04-29 12:21:50 by simonpj]
Document Olaf Chitils point about pattern matching against a polymoprhic argument
simonpj [Thu, 29 Apr 1999 11:53:34 +0000 (11:53 +0000)]
[project @ 1999-04-29 11:53:12 by simonpj]
Minor fixes to tests
simonm [Thu, 29 Apr 1999 10:38:33 +0000 (10:38 +0000)]
[project @ 1999-04-29 10:38:33 by simonm]
indexArray# fix.
sewardj [Wed, 28 Apr 1999 12:59:51 +0000 (12:59 +0000)]
[project @ 1999-04-28 12:59:51 by sewardj]
Nano-fixes to make it work on sparc-solaris.
sewardj [Wed, 28 Apr 1999 12:42:45 +0000 (12:42 +0000)]
[project @ 1999-04-28 12:42:45 by sewardj]
Change PK_DBL and ASSIGN_DBL macros for sparc so they only reference their
arguments once.
simonm [Wed, 28 Apr 1999 08:30:58 +0000 (08:30 +0000)]
[project @ 1999-04-28 08:30:58 by simonm]
merge --> mergeIO
sof [Tue, 27 Apr 1999 18:30:26 +0000 (18:30 +0000)]
[project @ 1999-04-27 18:30:26 by sof]
When installing, append to entries in PACKAGE_BINS list
sof [Tue, 27 Apr 1999 17:44:27 +0000 (17:44 +0000)]
[project @ 1999-04-27 17:44:26 by sof]
For a forkIO'ed process, report uncaught exceptions on stderr.
sof [Tue, 27 Apr 1999 17:41:20 +0000 (17:41 +0000)]
[project @ 1999-04-27 17:41:17 by sof]
* Added toplevel exception handler:
topHandler :: Bool -- bomb on exception caught
-> Exception
-> IO ()
for PrelMain.mainIO and Concurrent.forkIO to use
* moved forkIO out of PrelConc and into Concurrent.
sof [Tue, 27 Apr 1999 17:34:00 +0000 (17:34 +0000)]
[project @ 1999-04-27 17:33:49 by sof]
Renamer changes:
- for a toplevel type signature
f :: ty
the name 'f' refers to a local definition of 'f' - i.e., don't
report 'f' as clashing with any imported 'f's.
- tidied up the handling of fixity declarations - misplaced fixity
declarations inside class decls, e.g.,
class F a where
infix 9 `f`
g :: a -> Int
are now caught and reported as errors. Robustified the renaming
of class decls.
keithw [Tue, 27 Apr 1999 17:26:15 +0000 (17:26 +0000)]
[project @ 1999-04-27 17:26:09 by keithw]
glasgow-haskell-{bugs,users} has moved.
simonm [Tue, 27 Apr 1999 15:50:07 +0000 (15:50 +0000)]
[project @ 1999-04-27 15:50:07 by simonm]
unboxed 1-tuples are legal.
simonm [Tue, 27 Apr 1999 15:23:29 +0000 (15:23 +0000)]
[project @ 1999-04-27 15:23:29 by simonm]
Mark PrimOp arguments as lazy. This stops the simplifier throwing
away cases, and is consistent with the way applications work. We
could probably do better by using the information from
primOpStrictness.
simonm [Tue, 27 Apr 1999 15:21:32 +0000 (15:21 +0000)]
[project @ 1999-04-27 15:21:32 by simonm]
off-by-one in folding of tagToEnum#.
simonm [Tue, 27 Apr 1999 15:20:22 +0000 (15:20 +0000)]
[project @ 1999-04-27 15:20:20 by simonm]
deriving fixes.
simonm [Tue, 27 Apr 1999 15:03:20 +0000 (15:03 +0000)]
[project @ 1999-04-27 15:03:20 by simonm]
indexArray# changes.
simonm [Tue, 27 Apr 1999 14:35:25 +0000 (14:35 +0000)]
[project @ 1999-04-27 14:35:25 by simonm]
indexArray# now returns an unboxed 1-tuple.
sewardj [Tue, 27 Apr 1999 14:13:01 +0000 (14:13 +0000)]
[project @ 1999-04-27 14:13:01 by sewardj]
Firstified a few common fns for a modest performance gain,
ie, elem = any . (==) ===> directly recursive version.
sewardj [Tue, 27 Apr 1999 14:07:55 +0000 (14:07 +0000)]
[project @ 1999-04-27 14:07:53 by sewardj]
Further fixes to make -DDEBUG work right from mk/build.mk.
simonm [Tue, 27 Apr 1999 12:34:59 +0000 (12:34 +0000)]
[project @ 1999-04-27 12:34:49 by simonm]
- Fix the tagToEnum# support in the code generator
- Make isDeadBinder work on case binders
- Fix compiling of
case x `op` y of z {
True -> ... z ...
False -> ... z ...
- Clean up CgCase a little.
- Don't generate specialised tag2con functions for derived Enum/Ix
instances; use tagToEnum# instead.
simonm [Tue, 27 Apr 1999 12:32:15 +0000 (12:32 +0000)]
[project @ 1999-04-27 12:32:15 by simonm]
Remove declaration of PrelBase_Bool_closure_tbl.
simonm [Tue, 27 Apr 1999 12:31:40 +0000 (12:31 +0000)]
[project @ 1999-04-27 12:31:40 by simonm]
Add macros for declaring closure tables.
simonm [Tue, 27 Apr 1999 12:30:26 +0000 (12:30 +0000)]
[project @ 1999-04-27 12:30:26 by simonm]
Remove PrelBase_Bool_closure_tbl; this is now generated automatically.
sewardj [Tue, 27 Apr 1999 12:27:56 +0000 (12:27 +0000)]
[project @ 1999-04-27 12:27:49 by sewardj]
Correctify usage of -DDEBUG and -DDEBUG_EXTRA.
keithw [Tue, 27 Apr 1999 12:25:58 +0000 (12:25 +0000)]
[project @ 1999-04-27 12:25:58 by keithw]
Documentation added for RegexString.
simonm [Tue, 27 Apr 1999 12:25:23 +0000 (12:25 +0000)]
[project @ 1999-04-27 12:25:23 by simonm]
Add CLOSURE_TBL() macro for building closure tables.
sewardj [Tue, 27 Apr 1999 10:59:31 +0000 (10:59 +0000)]
[project @ 1999-04-27 10:59:29 by sewardj]
Minor mods to make STG Hugs compile out-of-the-box.
sewardj [Tue, 27 Apr 1999 10:07:25 +0000 (10:07 +0000)]
[project @ 1999-04-27 10:06:47 by sewardj]
Changes to improve runtime performance of STG Hugs.
-- Reorganisation of the evaluator (Evaluator.c).
-- Changes to code emission (Assembler.c) to support peephole opts
-- An experimental simplifier (optimise.c).
-- Many supporting bug fixes and minor changes.
-- Experimental implementation of integer for standalone hugs (sainteger.c).
simonm [Tue, 27 Apr 1999 09:37:04 +0000 (09:37 +0000)]
[project @ 1999-04-27 09:37:04 by simonm]
- Don't add -DCOMPILING_RTS twice
- *set* SRC_CC_OPTS rather than appending to it: we're using ghc as
the C compiler, so normal gcc flags probably won't work. eg. if
you put SRC_CC_OPTS += -g in your build.mk, it'll fall over here.
simonm [Mon, 26 Apr 1999 16:08:12 +0000 (16:08 +0000)]
[project @ 1999-04-26 16:08:12 by simonm]
add getTag#
simonm [Mon, 26 Apr 1999 16:06:37 +0000 (16:06 +0000)]
[project @ 1999-04-26 16:06:27 by simonm]
- New Wired-in Id: getTag# :: a -> Int#
for a data type, returns the tag of the constructor.
for a function, returns a spurious number probably.
dataToTag# is the name of the underlying primitive which
pulls out the tag (its argument is assumed to be
evaluated).
- Generate constructor tables for enumerated types, so we
can do tagToEnum#.
- Remove hacks in CoreToStg for dataToTag#.
simonm [Mon, 26 Apr 1999 15:19:28 +0000 (15:19 +0000)]
[project @ 1999-04-26 15:19:28 by simonm]
Add simple high-level interface to Regex (snaffled from my nofib log
analyser).
simonm [Mon, 26 Apr 1999 11:09:48 +0000 (11:09 +0000)]
[project @ 1999-04-26 11:09:48 by simonm]
oops, forgot to add dataToTag#.
simonm [Mon, 26 Apr 1999 10:16:25 +0000 (10:16 +0000)]
[project @ 1999-04-26 10:16:25 by simonm]
Reduce (dataToTag# x) where x is bound to a known constructor.
simonm [Mon, 26 Apr 1999 09:39:21 +0000 (09:39 +0000)]
[project @ 1999-04-26 09:39:21 by simonm]
Add note about needing -optCrts before RTS options for the compiler itself.
simonm [Fri, 23 Apr 1999 13:54:12 +0000 (13:54 +0000)]
[project @ 1999-04-23 13:54:12 by simonm]
dataToTag# support.
simonm [Fri, 23 Apr 1999 13:53:35 +0000 (13:53 +0000)]
[project @ 1999-04-23 13:53:28 by simonm]
Support for
dataToTag# :: a -> Int# (if a is a data type)
and (partial) support for
tagToEnum# :: Int# -> a (if a is an enumerated type)
The con2tag functions generated by derived Eq,Ord and Enum instances
are now replaced by dataToTag# for data types with a large number of
constructors.
sof [Fri, 23 Apr 1999 13:33:23 +0000 (13:33 +0000)]
[project @ 1999-04-23 13:33:23 by sof]
createPipe docfix
simonm [Fri, 23 Apr 1999 09:51:26 +0000 (09:51 +0000)]
[project @ 1999-04-23 09:51:24 by simonm]
Remove hack to force setting the CCCS when we enter a function closure
defined inside a lambda. We use a more general solution now.
simonm [Fri, 23 Apr 1999 09:47:33 +0000 (09:47 +0000)]
[project @ 1999-04-23 09:47:30 by simonm]
More profiling fixes. Profiles looking more reasonable, but for best
results add the -caf-all switch to GHC.
simonm [Fri, 23 Apr 1999 09:45:27 +0000 (09:45 +0000)]
[project @ 1999-04-23 09:45:27 by simonm]
Don't forget to set the CCCS from the thunk when entering std thunks.
simonpj [Tue, 20 Apr 1999 12:59:54 +0000 (12:59 +0000)]
[project @ 1999-04-20 12:59:51 by simonpj]
Better typechecker error message when a type-signature variable is unified with a type
simonm [Mon, 19 Apr 1999 16:30:55 +0000 (16:30 +0000)]
[project @ 1999-04-19 16:30:51 by simonm]
Allow a worker to be present for functions with no strictness info in
an interface file. This is useful for functions which get hit by CPR
but not the strictness analyser.
simonm [Mon, 19 Apr 1999 13:57:23 +0000 (13:57 +0000)]
[project @ 1999-04-19 13:57:21 by simonm]
Fixes to the unbox-strict-fields stuff for existential constructors.
kglynn [Wed, 14 Apr 1999 04:07:57 +0000 (04:07 +0000)]
[project @ 1999-04-14 04:07:57 by kglynn]
(keving)
Sigh, No point w/w pass storing the worker id in wrapper's info
field, because later simplifications may change the worker id. I've
restored the original code which looks in the wrapper function and
guesses the worker id. With the addition of CPR transf. this looks a
bit fragile. thinks, thinks, ....
sof [Tue, 13 Apr 1999 15:50:35 +0000 (15:50 +0000)]
[project @ 1999-04-13 15:50:29 by sof]
The {Int,Word}{8,16,32,64} types are no longer 'wired-in', just names
with a known key.
sof [Tue, 13 Apr 1999 15:46:49 +0000 (15:46 +0000)]
[project @ 1999-04-13 15:46:49 by sof]
Adjusted Id import to avoid module cycle; removed some unused helpers
kglynn [Tue, 13 Apr 1999 08:55:54 +0000 (08:55 +0000)]
[project @ 1999-04-13 08:55:33 by kglynn]
(keving)
Big Bang introduction of CPR Analysis Pass. Note that now
-fstrictness only does the strictness analysis phase, it is necessary
to follow this with -fworker-wrapper to actually do the required Core
transformations. The -O option in the ghc driver script has been
modified appropriately.
For now, CPR analysis is turned off. To try it, insert a
-fcpr_analyse between the -fstrictness and the -fworker-wrapper
options.
Misc. comments:
- The worker flag has been removed from an ID's StrictnessInfo field.
Now the worker info is an extra field in the Id's prag info.
- We do a nested CPR analysis, but worker-wrapper only looks at the
info for the outermost constructor, else laziness can be lost.
- Id's CPR Info in traces and interfaces file follows __M
- Worker-wrappery transformation now accounts for both strictness and
CPR analysis results.