ghc-hetmet.git
17 years agoadd missing ghc_ge_605
Simon Marlow [Thu, 31 Aug 2006 10:18:13 +0000 (10:18 +0000)]
add missing ghc_ge_605

17 years agodon't closeMutex() the Capability lock
Simon Marlow [Thu, 31 Aug 2006 08:57:28 +0000 (08:57 +0000)]
don't closeMutex() the Capability lock
There might be threads in foreign calls that will attempt to return
via resumeThread() and grab this lock, so we can't safely destroy it.

Fixes one cause of

   internal error: ASSERTION FAILED: file Capability.c, line 90

although I haven't repeated that assertion failure in the wild, only
with a specially crafted test case, so I can't be sure I really got
it.

17 years agofix Unix build
Simon Marlow [Wed, 30 Aug 2006 14:15:29 +0000 (14:15 +0000)]
fix Unix build

17 years agoadd sysErrorBelch() for reporting system call errors
Simon Marlow [Wed, 30 Aug 2006 14:02:52 +0000 (14:02 +0000)]
add sysErrorBelch() for reporting system call errors

17 years agocall ShutdownIOManager() before closing handles
Simon Marlow [Wed, 30 Aug 2006 12:31:31 +0000 (12:31 +0000)]
call ShutdownIOManager() before closing handles
To avoid IO requests completing only to discover that the
completed_table_sema has been CloseHandle()'d.  This all looks a bit
wrong, though: we shouldn't really be waiting for these requests to
complete, they might take forever.

17 years agoWindows: make some soft failures into fatal errors
Simon Marlow [Wed, 30 Aug 2006 09:18:59 +0000 (09:18 +0000)]
Windows: make some soft failures into fatal errors
Some of the memory allocation calls were being checked for error, but
the RTS was printing a message and continuing.  These error cases
lead to crashes later, so better to just fail immediately.

17 years agoMAYBE_GC: initialise HpAlloc
Simon Marlow [Wed, 30 Aug 2006 09:15:29 +0000 (09:15 +0000)]
MAYBE_GC: initialise HpAlloc
HpAlloc was not being set when returning to the scheduler via MAYBE_GC(),
which at the least was just wrong (the scheduler might allocate a large
block more than once), and at worst could lead to crashes if HpAlloc contains
garbage.

Fixes at least one threaded2 test on Windows.

17 years agoFILL_SLOP: don't fill slop for BLACKHOLE/CAF_BLACKHOLE
Simon Marlow [Wed, 30 Aug 2006 08:33:11 +0000 (08:33 +0000)]
FILL_SLOP: don't fill slop for BLACKHOLE/CAF_BLACKHOLE
This affects -debug only, avoids crash with test conc012.

17 years agooops, got the sense of the error case wrong
Simon Marlow [Tue, 29 Aug 2006 15:17:51 +0000 (15:17 +0000)]
oops, got the sense of the error case wrong

17 years agofix some rerrors in the worker counting
Simon Marlow [Tue, 29 Aug 2006 13:51:50 +0000 (13:51 +0000)]
fix some rerrors in the worker counting

17 years agoadd missing case for BlockedOnDoProc
Simon Marlow [Tue, 29 Aug 2006 11:33:45 +0000 (11:33 +0000)]
add missing case for BlockedOnDoProc

17 years agoomit HGL on Windows
Simon Marlow [Tue, 29 Aug 2006 10:49:21 +0000 (10:49 +0000)]
omit HGL on Windows

17 years agoDon't trust "ln -sf" to do the right thing (it doesn't on Solaris)
Simon Marlow [Tue, 29 Aug 2006 09:37:35 +0000 (09:37 +0000)]
Don't trust "ln -sf" to do the right thing (it doesn't on Solaris)
Patch from: Roman Leshchinskiy

17 years agodon't include HaXml, Japi and monads in a GHC checkout
Simon Marlow [Tue, 29 Aug 2006 08:59:46 +0000 (08:59 +0000)]
don't include HaXml, Japi and monads in a GHC checkout
They aren't built as part of a GHC build anyway, it doesn't make much
sense to include them in checkouts or source tarballs.

17 years agodon't include .depend (attempt to fix Windows stage2 build failure)
Simon Marlow [Tue, 29 Aug 2006 08:38:42 +0000 (08:38 +0000)]
don't include .depend (attempt to fix Windows stage2 build failure)

17 years agoAdd mipsel case to configure.ac
Ian Lynagh [Fri, 25 Aug 2006 19:36:03 +0000 (19:36 +0000)]
Add mipsel case to configure.ac

17 years agoincremented versions of arrows and X11
Ross Paterson [Fri, 25 Aug 2006 16:24:15 +0000 (16:24 +0000)]
incremented versions of arrows and X11

17 years agoomit Control.Sequential.STM
Ross Paterson [Fri, 25 Aug 2006 16:16:45 +0000 (16:16 +0000)]
omit Control.Sequential.STM

It's an internal module used by non-GHC implementations only.

17 years agovarious minor tweaks, and rearrange to put "important" changes near the top
Simon Marlow [Fri, 25 Aug 2006 15:49:55 +0000 (15:49 +0000)]
various minor tweaks, and rearrange to put "important" changes near the top

17 years agomention -fno-mono-pat-binds, since this is a diversion from Haskell 98
Simon Marlow [Fri, 25 Aug 2006 15:26:13 +0000 (15:26 +0000)]
mention -fno-mono-pat-binds, since this is a diversion from Haskell 98

17 years agoDocument SMP support
Simon Marlow [Fri, 25 Aug 2006 15:12:36 +0000 (15:12 +0000)]
Document SMP support

17 years agoLoad the target of a dynamic foreign call into a temporary
Simon Marlow [Fri, 25 Aug 2006 14:09:06 +0000 (14:09 +0000)]
Load the target of a dynamic foreign call into a temporary
Fixes ffi011(opt) on x86_64.  I don't know why this has only just
appeared today, it's apparently been broken for some time.

17 years agoSparc supports SMP too
Simon Marlow [Fri, 25 Aug 2006 13:36:28 +0000 (13:36 +0000)]
Sparc supports SMP too

17 years agoFix rewriting of Control.Exception.Assert; fixes 875
Ian Lynagh [Fri, 25 Aug 2006 01:02:19 +0000 (01:02 +0000)]
Fix rewriting of Control.Exception.Assert; fixes 875

17 years agoAdd the regex reshuffle to the release notes
Ian Lynagh [Fri, 25 Aug 2006 11:05:20 +0000 (11:05 +0000)]
Add the regex reshuffle to the release notes

17 years agoparsec is now a core library
Ian Lynagh [Fri, 25 Aug 2006 10:24:18 +0000 (10:24 +0000)]
parsec is now a core library

17 years agoAdd a default case to pprDynamicLinkerAsmLabel
Roman Leshchinskiy [Fri, 25 Aug 2006 10:18:46 +0000 (10:18 +0000)]
Add a default case to pprDynamicLinkerAsmLabel

This is mainly for the benefit of Solaris. I'll fix this properly later.

17 years agoReserve a register for REG_Base on the Sparc
Roman Leshchinskiy [Fri, 25 Aug 2006 10:18:20 +0000 (10:18 +0000)]
Reserve a register for REG_Base on the Sparc

17 years agoAdd atomic SMP primitives for the Sparc
Roman Leshchinskiy [Fri, 25 Aug 2006 10:17:53 +0000 (10:17 +0000)]
Add atomic SMP primitives for the Sparc

17 years agoMake sure GCC uses the Sparc V9 instruction set
Roman Leshchinskiy [Fri, 25 Aug 2006 10:16:46 +0000 (10:16 +0000)]
Make sure GCC uses the Sparc V9 instruction set

We only support Sparc V9 and better as V8 lacks an atomic CAS instruction
which we need for SMP. This means that we have to pass -mcpu=v9 to GCC when
compiling and assembling. Hardcoding the flag is hackish but seems to be
our best bet at the moment. It can still be overridden by the user as GCC
picks the best -mcpu flag regardless of the ordering.

17 years agoshutdownCapability(): don't bail out after 50 iterations
Simon Marlow [Fri, 25 Aug 2006 10:02:44 +0000 (10:02 +0000)]
shutdownCapability(): don't bail out after 50 iterations
See comments for details.  Fixes assertion failures in stage 3 build
which appeared after recent closeMutex() addidion.  May fix other
shutdown issues.

17 years agoadd dependency on regex-compat
Simon Marlow [Fri, 25 Aug 2006 09:32:26 +0000 (09:32 +0000)]
add dependency on regex-compat

17 years agomove parsec into $(GhcBootLibs); tidy up
Simon Marlow [Fri, 25 Aug 2006 09:10:13 +0000 (09:10 +0000)]
move parsec into $(GhcBootLibs); tidy up

17 years agoMips registerised support
Simon Marlow [Fri, 25 Aug 2006 08:57:12 +0000 (08:57 +0000)]
Mips registerised support
Contributed by: Thiemo Seufer <ths@networkno.de>

17 years agoparsec is required to be a core package, genprimopcode uses it
Simon Marlow [Fri, 25 Aug 2006 08:46:07 +0000 (08:46 +0000)]
parsec is required to be a core package, genprimopcode uses it

17 years agoFree Win32 Handles on shutdown
Simon Marlow [Fri, 25 Aug 2006 08:44:35 +0000 (08:44 +0000)]
Free Win32 Handles on shutdown
patch from #878

17 years agoFix unregisterised builds, and building on non-x86/amd64/powerpc
Ian Lynagh [Fri, 25 Aug 2006 00:39:45 +0000 (00:39 +0000)]
Fix unregisterised builds, and building on non-x86/amd64/powerpc

17 years agoRelease notes for GHC 6.6
Ian Lynagh [Thu, 24 Aug 2006 21:16:46 +0000 (21:16 +0000)]
Release notes for GHC 6.6

17 years agoUpdate for changes to packages
Simon Marlow [Thu, 24 Aug 2006 15:35:00 +0000 (15:35 +0000)]
Update for changes to packages
Not much has changed really: just the removal of the overlap
restriction, and the re-instatement of the requirement that
-package-name must be used when compiling a package now.

17 years agosomehow I lost the unix subdir; recover it
Simon Marlow [Thu, 24 Aug 2006 15:25:29 +0000 (15:25 +0000)]
somehow I lost the unix subdir; recover it

17 years agoexpand the section on getting the source.
Simon Marlow [Thu, 24 Aug 2006 15:06:47 +0000 (15:06 +0000)]
expand the section on getting the source.

17 years agoconfig in regex-posix too
Simon Marlow [Thu, 24 Aug 2006 14:57:17 +0000 (14:57 +0000)]
config in regex-posix too

17 years agomake all AC_CONFIG_SUBDIRS optional
Simon Marlow [Thu, 24 Aug 2006 14:30:16 +0000 (14:30 +0000)]
make all AC_CONFIG_SUBDIRS optional

17 years agoAdd dynCompileExpr
Esa Ilari Vuokko [Wed, 23 Aug 2006 22:18:28 +0000 (22:18 +0000)]
Add dynCompileExpr

17 years agoRemove duplicate documentation of -package flag
Ian Lynagh [Thu, 24 Aug 2006 12:18:06 +0000 (12:18 +0000)]
Remove duplicate documentation of -package flag

17 years agoRemove a reference to -fglobalise-toplev-names that got left behind
Ian Lynagh [Thu, 24 Aug 2006 12:14:42 +0000 (12:14 +0000)]
Remove a reference to -fglobalise-toplev-names that got left behind

17 years agoAdd closeMutex and use it on clean up
Esa Ilari Vuokko [Wed, 23 Aug 2006 19:46:04 +0000 (19:46 +0000)]
Add closeMutex and use it on clean up

17 years agoAdd shared Typeable support
Esa Ilari Vuokko [Wed, 23 Aug 2006 00:30:41 +0000 (00:30 +0000)]
Add shared Typeable support

17 years agoIgnore sections generated from .ident
Esa Ilari Vuokko [Wed, 23 Aug 2006 15:50:23 +0000 (15:50 +0000)]
Ignore sections generated from .ident

17 years agoupdate with respect to darcs-all changes
Simon Marlow [Thu, 24 Aug 2006 11:55:35 +0000 (11:55 +0000)]
update with respect to darcs-all changes

17 years agodivide packages into "core" and "extra" packages
Simon Marlow [Thu, 24 Aug 2006 11:49:02 +0000 (11:49 +0000)]
divide packages into "core" and "extra" packages
The following packages are now "core" packages:

  base, Cabal, haskell98, readline, regex-base, regex-compat
  regex-posix, stm, template-haskell, unix, Win32

Core packages are those packages required to bootstrap GHC, or are
closely tied to GHC (stm, template-haskell).  These are the packages
that will be provided in a source distribution from now on.

All other packages are classified as "extra" packages.  As far as
binary distributions and nightly builds go, nothing will change -
we'll still build and include all these packages in the distributions.

NOTE: 'sh darcs-all get' will now get the core packages only.  To get
the extra packages too, use 'sh darcs-all --extra get'.

17 years agoSparc fix: work around gcc optimising away the reserved stack chunk
Simon Marlow [Thu, 24 Aug 2006 11:37:50 +0000 (11:37 +0000)]
Sparc fix: work around gcc optimising away the reserved stack chunk
This bug causes crashse on Sparc when calling foreign functions with
more than 13 arguments.

17 years agoadd new regex packages
Simon Marlow [Thu, 24 Aug 2006 09:44:43 +0000 (09:44 +0000)]
add new regex packages

17 years agoClean up coding style
Esa Ilari Vuokko [Wed, 23 Aug 2006 07:58:22 +0000 (07:58 +0000)]
Clean up coding style

17 years agoUse stgMallc and stgFree instead of malloc/free
Esa Ilari Vuokko [Wed, 23 Aug 2006 00:29:02 +0000 (00:29 +0000)]
Use stgMallc and stgFree instead of malloc/free

17 years agoRemove wrong VirtualAlloc MEM_DECOMMITs on cleanup
Esa Ilari Vuokko [Mon, 21 Aug 2006 18:03:32 +0000 (18:03 +0000)]
Remove wrong VirtualAlloc MEM_DECOMMITs on cleanup

17 years agoRemove few format-warnings by adding casts
Esa Ilari Vuokko [Sun, 13 Aug 2006 11:10:29 +0000 (11:10 +0000)]
Remove few format-warnings by adding casts

17 years agoRemove warning: Correct includes for mingw
Esa Ilari Vuokko [Sun, 13 Aug 2006 00:22:16 +0000 (00:22 +0000)]
Remove warning: Correct includes for mingw

17 years agoAdd few more guesses where to find bits of mingw-gcc
Esa Ilari Vuokko [Sat, 12 Aug 2006 02:09:01 +0000 (02:09 +0000)]
Add few more guesses where to find bits of mingw-gcc

17 years agoin the GHCi prompt, print ModuleNames not Modules
Simon Marlow [Wed, 23 Aug 2006 09:52:58 +0000 (09:52 +0000)]
in the GHCi prompt, print ModuleNames not Modules

17 years agoIn the Compiling/Skipping message, print ModuleNames not Modules
Simon Marlow [Wed, 23 Aug 2006 09:52:25 +0000 (09:52 +0000)]
In the Compiling/Skipping message, print ModuleNames not Modules
These modules are always home modules, by definition, so the package
name is redundant.

17 years agoFix typo
Ian Lynagh [Tue, 22 Aug 2006 16:33:00 +0000 (16:33 +0000)]
Fix typo

17 years agoFix typo
Ian Lynagh [Tue, 22 Aug 2006 16:32:12 +0000 (16:32 +0000)]
Fix typo

17 years agoFastString and StringBuffer need -funbox-strict-fields too
Simon Marlow [Tue, 22 Aug 2006 14:33:37 +0000 (14:33 +0000)]
FastString and StringBuffer need -funbox-strict-fields too
For the benefit of old GHCs that don't understand {-# UNPACK #-}

17 years agominor fix to the clashing export error message
Simon Marlow [Tue, 22 Aug 2006 11:25:18 +0000 (11:25 +0000)]
minor fix to the clashing export error message
The ordering of items in the parsed export list is now correct, so we
have to compensate to get the right output again.

17 years agofindModule: add a fallthrough error case
Simon Marlow [Tue, 22 Aug 2006 11:24:09 +0000 (11:24 +0000)]
findModule: add a fallthrough error case

17 years agonotes about which versions of GHC can be used to bootstrap
Simon Marlow [Tue, 22 Aug 2006 09:35:54 +0000 (09:35 +0000)]
notes about which versions of GHC can be used to bootstrap

17 years agodisable .ident generation on darwin_TARGET_OS
Simon Marlow [Tue, 22 Aug 2006 09:03:49 +0000 (09:03 +0000)]
disable .ident generation on darwin_TARGET_OS

17 years agofix typo
Simon Marlow [Tue, 22 Aug 2006 07:37:31 +0000 (07:37 +0000)]
fix typo

17 years agofixes to PPC version of cas(), from David Kirkman <dkirkman@gmail.com>
Simon Marlow [Mon, 21 Aug 2006 15:31:36 +0000 (15:31 +0000)]
fixes to PPC version of cas(), from David Kirkman <dkirkman@gmail.com>

From David's email:
The problem is that the inline assembler code was placing the result
of an operation in a register that is used as input later in the code.
At the bottom of this message I've extracted a short short code
fragment that you can run through gcc (on a powerpc machine) to see
the generated assembly output.

The changes to fix the problem are fairly simple.  The first adds an
ampersand to the output list of the assembly fragment ("=r" (result)
--> "=&r" (result)) The ampersand just tells gcc that result can not
be placed in a register used for any of the input parameters (o, n, or
p).  Otherwise, it feels free to place output parameters in the same
registers used by the inputs -- but because of the flow of control
here we need everything in a distinct register.  This change fixes the
TVar program above.

The second change adds a clobber list (the :"cc", "memory").  This
tells gcc that the condition code (due to the compare) and memory (due
to the store) might be changed during the asm execution.  The lack of
a clobber list did not seem to be causing any trouble, but without it
gcc is free to assume that no state is changed during the execution.

17 years agoAlways use -funbox-strict-fields for Binary
Simon Marlow [Mon, 21 Aug 2006 15:21:11 +0000 (15:21 +0000)]
Always use -funbox-strict-fields for Binary
For some reason this was only enabled when $(bootstrapped)=YES.  This
would be one reason why the stage1 compiler is slow.  I guess we'll
find out if anything goes wrong.

17 years agodisable automagic building of GHCi in stage1
Simon Marlow [Mon, 21 Aug 2006 15:19:57 +0000 (15:19 +0000)]
disable automagic building of GHCi in stage1

17 years agoremove ancient file with incorrect information
Simon Marlow [Mon, 21 Aug 2006 14:19:46 +0000 (14:19 +0000)]
remove ancient file with incorrect information

17 years agonew option -a (append) for hasktags
Martin Grabmueller [Wed, 16 Aug 2006 09:14:27 +0000 (09:14 +0000)]
new option -a (append) for hasktags

17 years agougly hack to cause ghc_boot_platform.h to be built before primops.txt
Simon Marlow [Mon, 21 Aug 2006 12:06:30 +0000 (12:06 +0000)]
ugly hack to cause ghc_boot_platform.h to be built before primops.txt

17 years agoadd libraries/cgi and libraries/xhtml
Simon Marlow [Mon, 21 Aug 2006 10:29:08 +0000 (10:29 +0000)]
add libraries/cgi and libraries/xhtml

17 years ago(temp) #814 - More flexible memory allocation in Windows
Esa Ilari Vuokko [Sun, 20 Aug 2006 15:07:20 +0000 (15:07 +0000)]
(temp) #814 - More flexible memory allocation in Windows

17 years agofix export/import list parsing (allow (,)), and remove unnecessary reverses
Simon Marlow [Mon, 21 Aug 2006 10:26:33 +0000 (10:26 +0000)]
fix export/import list parsing (allow (,)), and remove unnecessary reverses

17 years agocomply with Haskell 98 by not allowing extra commas in import/export lists
Simon Marlow [Mon, 21 Aug 2006 09:59:12 +0000 (09:59 +0000)]
comply with Haskell 98 by not allowing extra commas in import/export lists

17 years agoMissing stage1's in hc-build
Ian Lynagh [Mon, 21 Aug 2006 09:22:26 +0000 (09:22 +0000)]
Missing stage1's in hc-build
Add mising stage1/ directories to object files touched by hc-build, and
give stage=1 as an argument to make install.

17 years agoremove spurious commas in imports
Ross Paterson [Sat, 19 Aug 2006 17:34:23 +0000 (17:34 +0000)]
remove spurious commas in imports

17 years agowhitespace cleanup only
Ross Paterson [Fri, 18 Aug 2006 22:40:14 +0000 (22:40 +0000)]
whitespace cleanup only

17 years agoremove gcj libs from bin dist
sof@galois.com [Fri, 18 Aug 2006 21:41:55 +0000 (21:41 +0000)]
remove gcj libs from bin dist

17 years agoI don't thing we want to add a call-context here; it just clutters the output
simonpj@microsoft.com [Fri, 18 Aug 2006 16:07:29 +0000 (16:07 +0000)]
I don't thing we want to add a call-context here; it just clutters the output

17 years agoAvoid duplicate "In type ..." in error messages
simonpj@microsoft.com [Fri, 18 Aug 2006 16:06:11 +0000 (16:06 +0000)]
Avoid duplicate "In type ..." in error messages

17 years agoBetter pretty-printing for TvSubst
simonpj@microsoft.com [Fri, 18 Aug 2006 16:05:51 +0000 (16:05 +0000)]
Better pretty-printing for TvSubst

17 years agoFall over more gracefully when there's a Template Haskell error
simonpj@microsoft.com [Fri, 18 Aug 2006 11:07:02 +0000 (11:07 +0000)]
Fall over more gracefully when there's a Template Haskell error

For a long time, Template Haskell has fallen over in a very un-graceful
way (i.e. panic) even when it encounters a programmer error.  In particular,
when DsMeta converts HsSyn to TH syntax, it may find Haskell code that
TH does not understand. This should be reported as a normal programmer
error, not with a compiler panic!

Originally the desugarer was supposed to never generate error
messages, but this TH desugaring thing does make it do so.  And in
fact, for other reasons, the desugarer now uses the TcRnIf monad, the
common monad used by the renamer, typechecker, interface checker, and
desugarer.

This patch completes the job, by
 - allowing the desugarer to generate errors
 - re-plumbing the error handling to take account of this
 - making DsMeta use the new facilities to report error gracefully

Quite a few lines of code are touched, but nothing deep is going on.

Fixes Trac# 760.

17 years agoFix typo (fst --> head) in docs on implicit parameters
simonpj@microsoft.com [Fri, 18 Aug 2006 07:59:37 +0000 (07:59 +0000)]
Fix typo (fst --> head) in docs on implicit parameters

17 years agoOne last hs-boot update
simonpj@microsoft.com [Thu, 17 Aug 2006 13:42:16 +0000 (13:42 +0000)]
One last hs-boot update

17 years agoMissing import for stage 2
simonpj@microsoft.com [Thu, 17 Aug 2006 13:32:47 +0000 (13:32 +0000)]
Missing import for stage 2

17 years agoOne more hs-boot file
simonpj@microsoft.com [Thu, 17 Aug 2006 13:32:20 +0000 (13:32 +0000)]
One more hs-boot file

17 years agoRefactoring for valid rule checking
simonpj@microsoft.com [Thu, 17 Aug 2006 13:01:41 +0000 (13:01 +0000)]
Refactoring for valid rule checking

17 years agoDo not CSE in INLINE and NOINLINE things
simonpj@microsoft.com [Thu, 17 Aug 2006 13:00:05 +0000 (13:00 +0000)]
Do not CSE in INLINE and NOINLINE things

See extensive comments with Note [INLINE and NOINLINE] in this file.

17 years agoUpdate lhs-boot files
simonpj@microsoft.com [Thu, 17 Aug 2006 13:20:03 +0000 (13:20 +0000)]
Update lhs-boot files

A consequence of my recent meddling with hs-boot files is that GHC is
more picky about the correpondence between the hs-boot file and the hs file.
In particular, you must use the same type synonyms.

This patche fixes up GHC's own hs-boot files to match the restriction.

17 years agoAdd ad-hoc typing checks for tagToEnum#
simonpj@microsoft.com [Wed, 16 Aug 2006 20:31:56 +0000 (20:31 +0000)]
Add ad-hoc typing checks for tagToEnum#

The problem with tagToEnum# is that it is not overloaded (in the
Haskell sense) but you are only supposed to apply it to a TyCon
that is an enumeration (isEnumerationTyCon).

The Real Way to do this is to have some special kind of type constraint
for the purpose, but that is wild overkill. So this patch adds a small
rather ad-hoc check to TcExpr.instFun.  Crude, simple, but it works fine.

Fixes Trac #786
Test is tcfail164

17 years agoGet dead-ness right in knownCon
simonpj@microsoft.com [Wed, 16 Aug 2006 16:42:16 +0000 (16:42 +0000)]
Get dead-ness right in knownCon

17 years agoTuning for argToPat
simonpj@microsoft.com [Wed, 16 Aug 2006 16:41:03 +0000 (16:41 +0000)]
Tuning for argToPat

argToPat is a crucial function for SpecConstr, because it decides
what patterns are worth specialising.  I was being much too gung-ho about
constants.  This patch makes it much better.

17 years agoRe-factor mkAtomicArgs and completeNonRecX
simonpj@microsoft.com [Wed, 16 Aug 2006 16:36:45 +0000 (16:36 +0000)]
Re-factor mkAtomicArgs and completeNonRecX

This refactoring ensures that when mkAtomicArgs adds new bindings,
it does so using completeNonRecX, which adds unfoldings etc.  More
modular, and saves passes too.

(This was important when getting rules to work right.  We want tob
fire a rule as soon as possible, taking into account all inlinings,
else a less-good rule applies.  That's what I found when doing
stream fusion anyway.)

Regardless, this is an improvement.

17 years agoAnother try at the continuation-swapping stuff
simonpj@microsoft.com [Wed, 16 Aug 2006 10:50:42 +0000 (10:50 +0000)]
Another try at the continuation-swapping stuff

I have spent altogether too long on my attempt to avoid case-of-case
in situations where it is a Bad Thing.  All the action is in the
case for mkDupableAlt that handles cases with a single alternative.

I've added rather extensive comments, and it finally seems to be working
more or less right.  If you compile (say) GHC/Real.o you'll see quite a
few case-of-cases remain (which didn't happen before), and they mostly look
pretty sensible to me.

17 years agoDon't build unnecessary lets in knownCon
simonpj@microsoft.com [Wed, 16 Aug 2006 10:48:31 +0000 (10:48 +0000)]
Don't build unnecessary lets in knownCon

Faced with
case x of y { (a,b) -> rhs }

where x is bound to (c,d), we were generating

let y = (c,d) in rhs

and thenn hoping to get rid of the y binding by CSE or some such.  It's
better simply not to build it in the first place, by generating

let y = x in rhs

This patch does the job.