13 years agoPrevent breakpoint instrumentation of spliced code
Pepe Iborra [Sun, 10 Dec 2006 22:31:02 +0000 (22:31 +0000)] 
Prevent breakpoint instrumentation of spliced code

13 years agoCapturing and keeping track of local bindins in the desugarer
Pepe Iborra [Sun, 10 Dec 2006 22:25:40 +0000 (22:25 +0000)] 
Capturing and keeping track of local bindins in the desugarer

Used in the desugaring of the breakpoint primitive

13 years agoHandle breakpoint jumps while splicing TH functions in ghci
Pepe Iborra [Sun, 10 Dec 2006 22:24:24 +0000 (22:24 +0000)] 
Handle breakpoint jumps while splicing TH functions in ghci

The dynamic linker has been modified so that it won't panic if one of the breakpointJump functions fails to resolve.
Now, if the dynamic linker fails to find a HValue for a Name, before looking for a static symbol it will ask to

Breakpoints.lookupBogusBreakpointVal :: Name -> Maybe HValue

which returns an identity function for the Jump names or Nothing else.

A TH function might contain a call to a breakpoint function. So if it is compiled to bytecodes, the breakpoints will be desugared to 'jumps'. Whenever this code is spliced, the linker will fail to find the jumpfunctions unless there is a default.

13 years agoBreakpoint code instrumentation
Pepe Iborra [Sun, 10 Dec 2006 20:49:34 +0000 (20:49 +0000)] 
Breakpoint code instrumentation

Instrumentation gets activated by the '-fdebugging' dynflag.

All the instrumentation occurrs in the desugarer; it consists of inserting 'breakpoint' combinators at a number of places in the AST, namely:
 - Binding sites
 - Do-notation statements
These 'breakpoint' combinators will later be further desugared (at DsExpr) into ___Jump functions.
For more info about this and all the ghci.debugger see the page at the GHC wiki:

13 years agoThe breakpoint primitive
Pepe Iborra [Sun, 10 Dec 2006 20:37:29 +0000 (20:37 +0000)] 
The breakpoint primitive

13 years agoGHCi debugger documentation
Pepe Iborra [Sun, 10 Dec 2006 18:41:23 +0000 (18:41 +0000)] 
GHCi debugger documentation

13 years agoExtend the GHC API with breakpoints and breakpoint handlers
Pepe Iborra [Sun, 10 Dec 2006 18:40:27 +0000 (18:40 +0000)] 
Extend the GHC API with breakpoints and breakpoint handlers

The entry point is:
setBreakpointHandler :: Session -> BkptHandler Module -> IO ()

13 years agoPlaying with closures
Pepe Iborra [Sun, 10 Dec 2006 17:30:05 +0000 (17:30 +0000)] 
Playing with closures

RtClosureInspect includes a bunch of stuff for playing with closures:

- the datatype Closure is the low level representation type
- the datatype Term is the high level representation type
- cvObtainTerm is the main entry point, providing the Term representation of an arbitrary closure

13 years agoRetrieving the datacon of an arbitrary closure
Pepe Iborra [Sun, 10 Dec 2006 11:29:44 +0000 (11:29 +0000)] 
Retrieving the datacon of an arbitrary closure

This patch extends the RTS linker and the dynamic linker so that it is possible to find out the datacon of a closure in heap at runtime:
- The RTS linker now carries a hashtable 'Address->Symbol' for data constructors
- The Persistent Linker State in the dynamic linker is extended in a similar way.

Finally, these two sources of information are consulted by:

> Linker.recoverDataCon :: a -> TcM Name

13 years agoTwo new prim ops to access the Info Table and Payload of a closure:
Pepe Iborra [Sat, 9 Dec 2006 17:38:23 +0000 (17:38 +0000)] 
Two new prim ops to access the Info Table and Payload of a closure:

- infoPtr# :: a -> Addr#
- closurePayload# :: a -> (# Array b, ByteArr# #)

These prim ops provide the magic behind the ':print' command

13 years agoFree more things that we allocate 2006-12-16
Ian Lynagh [Fri, 15 Dec 2006 21:44:30 +0000 (21:44 +0000)] 
Free more things that we allocate

13 years agoFree all tasks on exit, not just those on the task_free_list
Ian Lynagh [Fri, 15 Dec 2006 17:26:17 +0000 (17:26 +0000)] 
Free all tasks on exit, not just those on the task_free_list

13 years agoGive cap its correct type, rather than void
Ian Lynagh [Fri, 15 Dec 2006 17:25:58 +0000 (17:25 +0000)] 
Give cap its correct type, rather than void

13 years agoPut the task on the free list in workerTaskStop
Ian Lynagh [Fri, 15 Dec 2006 16:42:10 +0000 (16:42 +0000)] 
Put the task on the free list in workerTaskStop

13 years agoFree various things we allocate
Ian Lynagh [Fri, 15 Dec 2006 13:45:07 +0000 (13:45 +0000)] 
Free various things we allocate

13 years agoUpdating rix output to new standard. [Thu, 14 Dec 2006 23:52:10 +0000 (23:52 +0000)] 
Updating rix output to new standard.

13 years agoupdate, and add some more build flavours (inc. dons's fast build)
Simon Marlow [Thu, 14 Dec 2006 11:09:47 +0000 (11:09 +0000)] 
update, and add some more build flavours (inc. dons's fast build)

13 years agoRework the block allocator
Simon Marlow [Thu, 14 Dec 2006 11:09:01 +0000 (11:09 +0000)] 
Rework the block allocator

The main goal here is to reduce fragmentation, which turns out to be
the case of #743.  While I was here I found some opportunities to
improve performance too.  The code is rather more complex, but it also
contains a long comment describing the strategy, so please take a look
at that for the details.

13 years agofix wibble in memory leak error dump
Simon Marlow [Thu, 14 Dec 2006 10:11:02 +0000 (10:11 +0000)] 
fix wibble in memory leak error dump

13 years agoRemoving explicit Binary Tick Boxes; using Case instead. [Wed, 13 Dec 2006 18:45:02 +0000 (18:45 +0000)] 
Removing explicit Binary Tick Boxes; using Case instead.

13 years agoAdd left-to-right impredicative instantiation [Wed, 13 Dec 2006 16:29:15 +0000 (16:29 +0000)] 
Add left-to-right impredicative instantiation

People keep complaining, with some justification, that

runST $ foo

doesn't work.  So I've finally caved in.  The difficulty with the above
is that we need to decide how to instantiate ($)'s type arguments based
on the first argument (runST), and then use that info to check the second
argumnent.  There is a left-to-right flow of information.

It's not hard to implement this, and it's clearly useful.  The main
change is in TcExpr.tcArgs, with some knock-on effects elsewhere.

I was finally provoked into this by Trac #981, which turned out, after some
head-scratching, to be another instance of the same problem.

(There was some bug-fixing too; a type like ((?x::Int) => ...) is a polytype
even though it has no leading for-alls, but the new TcUnify code was not
treating it right.)

Test for this is tc222

13 years agoRemoving unused argument to a printf. [Wed, 13 Dec 2006 16:06:51 +0000 (16:06 +0000)] 
Removing unused argument to a printf.

13 years agofixing obvious typo in darwin_HOST_OS code (currently does not compile). [Wed, 13 Dec 2006 16:06:01 +0000 (16:06 +0000)] 
fixing obvious typo in darwin_HOST_OS code (currently does not compile).

13 years agoPowerPC NCG: support conditional branches outside +-32KB [Wed, 13 Dec 2006 13:38:08 +0000 (13:38 +0000)] 
PowerPC NCG: support conditional branches outside +-32KB

Work around the PowerPC architecture's +-32KB limitation for conditional
branches by conditionally skipping an unconditional branch instead
(unconditional branches have a +-32MB range).

This requires an extra pass over the basic blocks for each CmmTop after
block sequencing, to determine which branches are "far".

Fixes ticket #709, "Fixup too large" error with -fasm on PowerPC

13 years agoFix allocation debugger to handle allocations in con/destructors
Ian Lynagh [Wed, 13 Dec 2006 13:35:18 +0000 (13:35 +0000)] 
Fix allocation debugger to handle allocations in con/destructors
conc021 is an example of a program that broke.
It doesn't handle them particularly well still, but it doesn't crash at

13 years agoDon't free sched_mutex until freeTaskManager has finished with it
Simon Marlow [Tue, 12 Dec 2006 15:33:53 +0000 (15:33 +0000)] 
Don't free sched_mutex until freeTaskManager has finished with it
Also move closeMutex() etc. into freeTaskManager, this is a free-ish thing

13 years agoGive a better panic if the allocation debugger is used uninitialised
Ian Lynagh [Wed, 13 Dec 2006 12:26:02 +0000 (12:26 +0000)] 
Give a better panic if the allocation debugger is used uninitialised

13 years agoMisc Hpc improvement to dynamic tracer output [Wed, 13 Dec 2006 00:19:17 +0000 (00:19 +0000)] 
Misc Hpc improvement to dynamic tracer output

 - Added HPCRIX support for passing tracer filename.
 - Added thread tracing support.
 - Cleaned up use of HsFFI.h

13 years agoAdding tracing support [Sat, 9 Dec 2006 05:03:34 +0000 (05:03 +0000)] 
Adding tracing support

13 years agoMisc unsigned printing issues; adding magicTixNumber. [Thu, 30 Nov 2006 00:30:24 +0000 (00:30 +0000)] 
Misc unsigned printing issues; adding magicTixNumber.

13 years agoTurn -Wall on
Ian Lynagh [Tue, 12 Dec 2006 20:11:27 +0000 (20:11 +0000)] 
Turn -Wall on

13 years agoFix more warnings
Ian Lynagh [Tue, 12 Dec 2006 20:04:22 +0000 (20:04 +0000)] 
Fix more warnings

13 years agoFix whitespace
Ian Lynagh [Tue, 12 Dec 2006 18:22:15 +0000 (18:22 +0000)] 
Fix whitespace

13 years agoSilence some warnings
Ian Lynagh [Tue, 12 Dec 2006 18:20:44 +0000 (18:20 +0000)] 
Silence some warnings

13 years agoFix more warnings
Ian Lynagh [Tue, 12 Dec 2006 17:43:10 +0000 (17:43 +0000)] 
Fix more warnings

13 years agoRemove trailing white space
Ian Lynagh [Tue, 12 Dec 2006 17:37:05 +0000 (17:37 +0000)] 
Remove trailing white space

13 years agoDetab
Ian Lynagh [Tue, 12 Dec 2006 17:36:25 +0000 (17:36 +0000)] 

13 years agoFix thd3
Ian Lynagh [Tue, 12 Dec 2006 17:34:27 +0000 (17:34 +0000)] 
Fix thd3

13 years agoSilence some warnings
Ian Lynagh [Tue, 12 Dec 2006 17:34:04 +0000 (17:34 +0000)] 
Silence some warnings

13 years agoSilence more warnings
Ian Lynagh [Tue, 12 Dec 2006 17:27:56 +0000 (17:27 +0000)] 
Silence more warnings

13 years agoMore warning fixes
Ian Lynagh [Tue, 12 Dec 2006 16:46:51 +0000 (16:46 +0000)] 
More warning fixes

13 years agoFix more warnings
Ian Lynagh [Tue, 12 Dec 2006 16:26:24 +0000 (16:26 +0000)] 
Fix more warnings

13 years agoMore warning fixes and some code rejigging
Ian Lynagh [Tue, 12 Dec 2006 16:17:54 +0000 (16:17 +0000)] 
More warning fixes and some code rejigging

13 years agoFix more warnings
Ian Lynagh [Tue, 12 Dec 2006 16:10:26 +0000 (16:10 +0000)] 
Fix more warnings

13 years agoFix some warnings
Ian Lynagh [Tue, 12 Dec 2006 16:00:20 +0000 (16:00 +0000)] 
Fix some warnings

13 years agoBeautify a bit
Ian Lynagh [Tue, 12 Dec 2006 15:48:01 +0000 (15:48 +0000)] 
Beautify a bit

13 years agoRemove trailing spaces
Ian Lynagh [Tue, 12 Dec 2006 15:43:07 +0000 (15:43 +0000)] 
Remove trailing spaces

13 years agoDetab
Ian Lynagh [Tue, 12 Dec 2006 15:42:11 +0000 (15:42 +0000)] 

13 years agoMissed a stage-2 problem in the TcSimplify refactoring [Tue, 12 Dec 2006 13:28:13 +0000 (13:28 +0000)] 
Missed a stage-2 problem in the TcSimplify refactoring

13 years agoComments only [Tue, 12 Dec 2006 13:28:02 +0000 (13:28 +0000)] 
Comments only

13 years agoMERGE: Fix Windows DEP violations (bug #885)
Simon Marlow [Tue, 12 Dec 2006 10:36:23 +0000 (10:36 +0000)] 
MERGE: Fix Windows DEP violations (bug #885)
Original patch by

13 years agoFix the pattern for _hpc symbols: it incorrectly matched the _hp suffix too
Simon Marlow [Tue, 12 Dec 2006 10:32:37 +0000 (10:32 +0000)] 
Fix the pattern for _hpc symbols: it incorrectly matched the _hp suffix too
This has the undesitrable effect that stg_gc_gen_hp in the RTS was
caught as an HPC symbol and put in the data segment.

13 years agoFix up yesterdays commit to TcSimplify; fixes broken HEAD [Tue, 12 Dec 2006 09:25:56 +0000 (09:25 +0000)] 
Fix up yesterdays commit to TcSimplify; fixes broken HEAD

13 years agoAdd comments, plus fix zapFragileInfo to zap worker info [Mon, 11 Dec 2006 16:51:41 +0000 (16:51 +0000)] 
Add comments, plus fix zapFragileInfo to zap worker info

This is a minor fix up to the patch
 * retain arity for let-bound vars in simplifier

13 years agoAdd comments about pruning implication constraints [Mon, 11 Dec 2006 16:43:33 +0000 (16:43 +0000)] 
Add comments about pruning implication constraints

13 years agoUnbreak x86_64 PIC patch, part 3 [Mon, 11 Dec 2006 22:26:35 +0000 (22:26 +0000)] 
Unbreak x86_64 PIC patch, part 3

This time, the PowerPC NCG suffered from a typo.

(I've really grown to hate all those #if foo_TARGET_ARCH
 lines. I need to build GHC for at least four different
 platforms just to make sure that there are no typos...)

13 years agoSupport MO_WriteBarrier in PowerPC NCG (lwsync instruction) [Mon, 11 Dec 2006 22:25:34 +0000 (22:25 +0000)] 
Support MO_WriteBarrier in PowerPC NCG (lwsync instruction)

13 years agoFix allocate name clash in the HEAD
Ian Lynagh [Mon, 11 Dec 2006 19:21:03 +0000 (19:21 +0000)] 
Fix allocate name clash in the HEAD

13 years agoAdd freeScheduler/freeTaskManager and call it later than exitScheduler
Ian Lynagh [Mon, 11 Dec 2006 13:10:04 +0000 (13:10 +0000)] 
Add freeScheduler/freeTaskManager and call it later than exitScheduler
We were freeing the tasks in exitScheduler (stopTaskManager) before
exitStorage (stat_exit), but the latter needs to walk down the list
printing stats. Resulted in segfaults with commands like
    ghc -v0 -e main q.hs -H32m -H32m +RTS -Sstderr
(where q.hs is trivial), but very sensitive to exact commandline and
libc version or something.

13 years agoWhen debugging, have the allocator help us a bit
Ian Lynagh [Mon, 11 Dec 2006 12:49:50 +0000 (12:49 +0000)] 
When debugging, have the allocator help us a bit
We now check for freeing memory that isn't allocated, and overwrite memory
we are about to free with 0xaa.
It might be nice to also have a flag to control whether the memory
actually gets free'd.

13 years agoMore refactoring of constraint simplification [Mon, 11 Dec 2006 16:07:32 +0000 (16:07 +0000)] 
More refactoring of constraint simplification

This patch fixes several bugs in the handling of impliciation
constraints, thereby fixing several regression-suite failures.

On the way I managed to further simplify the code in TcSimplify;
the extra lines are comments.

13 years agoImprove origin of constraints in subsumption checking [Mon, 11 Dec 2006 16:05:57 +0000 (16:05 +0000)] 
Improve origin of constraints in subsumption checking

13 years agoSuggests -fglasgow-exts for contexts-differ-in-length error [Mon, 11 Dec 2006 16:05:17 +0000 (16:05 +0000)] 
Suggests -fglasgow-exts for contexts-differ-in-length error

13 years agoComments and layout only [Mon, 11 Dec 2006 16:04:09 +0000 (16:04 +0000)] 
Comments and layout only

13 years agoRemove strange extra print (a temporary debug?) [Mon, 11 Dec 2006 15:50:35 +0000 (15:50 +0000)] 
Remove strange extra print (a temporary debug?)

13 years agoFix typo [Fri, 8 Dec 2006 13:48:07 +0000 (13:48 +0000)] 
Fix typo

13 years agoImprove parsing for bang patterns (fixes Trac #1041) [Fri, 8 Dec 2006 13:46:29 +0000 (13:46 +0000)] 
Improve parsing for bang patterns (fixes Trac #1041)

13 years agoUnbreak x86_64 PIC patch, part 2 [Sun, 10 Dec 2006 13:27:12 +0000 (13:27 +0000)] 
Unbreak x86_64 PIC patch, part 2

Continue repairing breakage from patch
"x86_64: support PIC and therefore, Mac OS X in the NCG",
this time something affecting (linux && !i386)

13 years agoUse System.IO.stderr rather than IO.stderr in GHCi. Fixes trac #1001.
Ian Lynagh [Sat, 9 Dec 2006 18:51:52 +0000 (18:51 +0000)] 
Use System.IO.stderr rather than IO.stderr in GHCi. Fixes trac #1001.
GHCi evaluates a command to flush the stdout/stderr buffers, but this
command can only use names that are in scope. It used to need IO.stderr
from the haskell98 package, but this patch means it only needs things
from the base package.

13 years agoAdd PowerPC to the list of SMP arches
Ian Lynagh [Sat, 9 Dec 2006 17:42:03 +0000 (17:42 +0000)] 
Add PowerPC to the list of SMP arches

13 years agoMake './darcs-all get --complete' work [Sat, 9 Dec 2006 12:51:54 +0000 (12:51 +0000)] 
Make './darcs-all get --complete' work

13 years agofix for #1013.
Simon Marlow [Thu, 7 Dec 2006 15:16:44 +0000 (15:16 +0000)] 
fix for #1013.
We weren't getting the bitmap right for the continuation BCO in a case-of-case.

13 years agoUnbreak previous x86_64 PIC patch [Thu, 7 Dec 2006 13:31:08 +0000 (13:31 +0000)] 
Unbreak previous x86_64 PIC patch

Make things compile on Linux again

13 years agoTell the NCG that XOR foo, foo does *not* read foo [Thu, 7 Dec 2006 13:17:21 +0000 (13:17 +0000)] 
Tell the NCG that XOR foo, foo does *not* read foo

On x86[-64], MachCodeGen uses the old XOR trick to zero a register.
This patch makes regUsage not list the register as an input in this
Listing the register as an input for the instruction could make it
appear like an unitialised value, which is bad because unitialised
values can cause the register allocator to panic (at least in the
presence of a loop).

13 years agox86_64: support PIC and therefore, Mac OS X in the NCG [Thu, 7 Dec 2006 13:16:07 +0000 (13:16 +0000)] 
x86_64: support PIC and therefore, Mac OS X in the NCG

Supporting x86_64-apple-darwin in the NCG basically boils down to supporting
position-independent code in the NCG.
PIC code works almost exactly the same as on x86_64-linux, while position-dependent
code is not supported at all.
This patch implements -fPIC for x86_64-linux, too, but that is untested.

13 years agoFix family instance consistency check for home package modules
Manuel M T Chakravarty [Thu, 7 Dec 2006 01:41:18 +0000 (01:41 +0000)] 
Fix family instance consistency check for home package modules
* So far, family instance modules was only available for external modules.
* This fixes the "Over" test in the testsuite under indexed-types/

13 years agoKind sigs in associated data/newtype family decls may be omitted
Manuel M T Chakravarty [Wed, 6 Dec 2006 22:33:20 +0000 (22:33 +0000)] 
Kind sigs in associated data/newtype family decls may be omitted
* This is only a slight generalisation of the parser, so that family
  declarations on the toplevel and in classes are uniform.
* I didn't allow that right away as it is a bit tricky to avoid reduce/reduce

13 years agoAdd release note that Network.CGI.Compat uses XHtml rather than Html
Ian Lynagh [Wed, 6 Dec 2006 14:49:46 +0000 (14:49 +0000)] 
Add release note that Network.CGI.Compat uses XHtml rather than Html

13 years agoImprove dependency analysis; makes more dictionaries inlinable [Wed, 6 Dec 2006 07:18:45 +0000 (07:18 +0000)] 
Improve dependency analysis; makes more dictionaries inlinable

I recentl changed the scoring system used by dependency analysis for
recursive bindings, that it used the *form* of the RHS of a binding,
rather than just its type. In doing so I inadvertently made recursive
dictionary bindings unravel less well, because I'd missed the case
of  c = /\a. C (...) (...)

This patch fixes the problem.  A good example is the instance for
Monad (ST s) or Show (ST s a) in GHC.ST.  It's vital for these
dictionaries to be inlinable.

13 years agoAdd documentation for seq [Mon, 4 Dec 2006 01:31:16 +0000 (01:31 +0000)] 
Add documentation for seq

13 years agoComments only [Mon, 4 Dec 2006 01:30:40 +0000 (01:30 +0000)] 
Comments only

13 years agoMake a ghc/ghci manpage
Ian Lynagh [Tue, 5 Dec 2006 23:52:44 +0000 (23:52 +0000)] 
Make a ghc/ghci manpage
Set GhcManpages=YES in mk/ if you want to build the manpage.

13 years agowe need GHC.Conc.ensureIOManagerIsRunning on Windows too
Simon Marlow [Tue, 5 Dec 2006 16:24:35 +0000 (16:24 +0000)] 
we need GHC.Conc.ensureIOManagerIsRunning on Windows too

13 years agoadd Windows-specific GHCi information, and a FAQ about ^C in GHCi on Windows
Simon Marlow [Tue, 5 Dec 2006 16:11:40 +0000 (16:11 +0000)] 
add Windows-specific GHCi information, and a FAQ about ^C in GHCi on Windows

13 years agoupdate the question about concurrent threads & GHCi
Simon Marlow [Tue, 5 Dec 2006 15:39:47 +0000 (15:39 +0000)] 
update the question about concurrent threads & GHCi

13 years agofix Windows GHCi
Simon Marlow [Mon, 4 Dec 2006 16:43:26 +0000 (16:43 +0000)] 
fix Windows GHCi

13 years agoMERGE: In hashExpr, use Word32 rather than relying on wrapping behaviour of Int
Ian Lynagh [Sun, 3 Dec 2006 22:33:37 +0000 (22:33 +0000)] 
MERGE: In hashExpr, use Word32 rather than relying on wrapping behaviour of Int
Fixes #952, as it turns out.

When compiling via C, we are at the mercy of C's undefined behaviour
with respect to overflow of signed integer operations, and this was
biting us here.

Perhaps we should always add the -fwrapv flag to gcc, but since
Haskell doesn't define overflow on Int either, it seemed the right
thing to do to fix this code anyway.

13 years agoFixed and simplified repository calculation, works via SSH now, too [Sun, 3 Dec 2006 13:48:24 +0000 (13:48 +0000)] 
Fixed and simplified repository calculation, works via SSH now, too

13 years agoAdd support for the IO manager thread on Windows
Simon Marlow [Fri, 1 Dec 2006 14:48:23 +0000 (14:48 +0000)] 
Add support for the IO manager thread on Windows
Fixes #637.
The implications of this change are:
  - threadDelay on Windows no longer creates a new OS thread each time,
    instead it communicates with the IO manager thread in the same way as
    on Unix.
  - deadlock detection now works the same way on Windows as on Unix; that
    is the timer interrupt wakes up the IO manager thread, which causes
    the scheduler to check for deadlock.
  - Console events now get sent to the IO manager thread, in the same way as
    signals do on Unix.  This means that console events should behave more
    reliably with -threaded on Windows.

All this applies only with -threaded.  Without -threaded, the old
ConsoleEvent code is still used.

After some testing, this could be pushed to the 6.6 branch.

13 years agoRemove the Windows Async IO Manager completely in THREADED_RTS mode
Simon Marlow [Fri, 1 Dec 2006 14:07:53 +0000 (14:07 +0000)] 
Remove the Windows Async IO Manager completely in THREADED_RTS mode
It isn't used here anyway, just making sure the code doesn't get compiled in.

13 years agoDecouple -O from -fvia-C [Fri, 1 Dec 2006 12:53:04 +0000 (12:53 +0000)] 
Decouple -O from -fvia-C

Nowadays, there are situations where -fvia-C is definitely unwanted, such
as when -fPIC is used on some platforms, so we do not want implicit -fvia-C
any more.

13 years agoq [Fri, 1 Dec 2006 03:42:07 +0000 (03:42 +0000)] 

13 years agocas(): modify assembly syntax to make it work everywhere (hopefully)
Simon Marlow [Tue, 21 Nov 2006 13:26:46 +0000 (13:26 +0000)] 
cas(): modify assembly syntax to make it work everywhere (hopefully)

13 years agouse "lock cmpxchg" instead of "lock/cmpxchg"
Simon Marlow [Fri, 17 Nov 2006 11:44:29 +0000 (11:44 +0000)] 
use "lock cmpxchg" instead of "lock/cmpxchg"
I'm not sure where the latter version came from, but it apparently
doesn't generate a legal instruction on Solaris.

13 years agoUpdate library version numbers in release notes
Ian Lynagh [Mon, 9 Oct 2006 12:02:43 +0000 (12:02 +0000)] 
Update library version numbers in release notes

13 years agoFix _module_registered bug for sparc linux.
Simon Marlow [Fri, 6 Oct 2006 10:45:34 +0000 (10:45 +0000)] 
Fix _module_registered bug for sparc linux.
Patch by Ferris McCormick <>
This patch has been tested with GHC-6.4.2 where it fixes a
huge number of testsuite failures (down from 406 to 17)

13 years agoRemove trace [Wed, 29 Nov 2006 22:52:43 +0000 (22:52 +0000)] 
Remove trace

13 years agoRemove bogus comment [Wed, 29 Nov 2006 22:52:23 +0000 (22:52 +0000)] 
Remove bogus comment

13 years agoTeach SpecConstr how to handle mutually-recursive functions [Wed, 29 Nov 2006 21:39:31 +0000 (21:39 +0000)] 
Teach SpecConstr how to handle mutually-recursive functions

Roman found cases where it was important to do SpecConstr for
mutually-recursive definitions.  Here is one:
foo :: Maybe Int -> Int
foo Nothing  = 0
foo (Just 0) = foo Nothing
foo (Just n) = foo (Just (n-1))
By the time SpecConstr gets to it, it looks like this:
lvl = foo Nothing
foo Nothing  = 0
foo (Just 0) = lvl
foo (Just n) = foo (Just (n-1))

Happily, it turns out to be rather straightforward to generalise the
transformation to mutually-recursive functions.  Look, ma, only 4
extra lines of ocde!

13 years agoImprove the loop-breaking heuristics [Wed, 29 Nov 2006 21:24:40 +0000 (21:24 +0000)] 
Improve the loop-breaking heuristics

The loop-breaking heuristics were making it a high priority to
avoid choosing a variable as a loop breaker if its *type* was a
data type.  The reason is that it's very good to be able to "see"
constructor applications.

But it's only good if the constructor application is *visible*,
so that is what I test for now.  I found a case (when testing
SpecConstr) where I had a Rec like this:
rec { lvl = foo Nothing
      foo = ...
        RULE foo Nothing = ...

Even if lvl has a data type, it's much better to make lvl the loop
breaker, not foo, so that foo's RULE is visible in lvl's RHS.