wolfgang.thaller@gmx.net [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
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
least.
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
Ian Lynagh [Wed, 13 Dec 2006 12:26:02 +0000 (12:26 +0000)]
Give a better panic if the allocation debugger is used uninitialised
andy@galois.com [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
andy@galois.com [Sat, 9 Dec 2006 05:03:34 +0000 (05:03 +0000)]
Adding tracing support
andy@galois.com [Thu, 30 Nov 2006 00:30:24 +0000 (00:30 +0000)]
Misc unsigned printing issues; adding magicTixNumber.
Ian Lynagh [Tue, 12 Dec 2006 20:11:27 +0000 (20:11 +0000)]
Turn -Wall on
Ian Lynagh [Tue, 12 Dec 2006 20:04:22 +0000 (20:04 +0000)]
Fix more warnings
Ian Lynagh [Tue, 12 Dec 2006 18:22:15 +0000 (18:22 +0000)]
Fix whitespace
Ian Lynagh [Tue, 12 Dec 2006 18:20:44 +0000 (18:20 +0000)]
Silence some warnings
Ian Lynagh [Tue, 12 Dec 2006 17:43:10 +0000 (17:43 +0000)]
Fix more warnings
Ian Lynagh [Tue, 12 Dec 2006 17:37:05 +0000 (17:37 +0000)]
Remove trailing white space
Ian Lynagh [Tue, 12 Dec 2006 17:36:25 +0000 (17:36 +0000)]
Detab
Ian Lynagh [Tue, 12 Dec 2006 17:34:27 +0000 (17:34 +0000)]
Fix thd3
Ian Lynagh [Tue, 12 Dec 2006 17:34:04 +0000 (17:34 +0000)]
Silence some warnings
Ian Lynagh [Tue, 12 Dec 2006 17:27:56 +0000 (17:27 +0000)]
Silence more warnings
Ian Lynagh [Tue, 12 Dec 2006 16:46:51 +0000 (16:46 +0000)]
More warning fixes
Ian Lynagh [Tue, 12 Dec 2006 16:26:24 +0000 (16:26 +0000)]
Fix more warnings
Ian Lynagh [Tue, 12 Dec 2006 16:17:54 +0000 (16:17 +0000)]
More warning fixes and some code rejigging
Ian Lynagh [Tue, 12 Dec 2006 16:10:26 +0000 (16:10 +0000)]
Fix more warnings
Ian Lynagh [Tue, 12 Dec 2006 16:00:20 +0000 (16:00 +0000)]
Fix some warnings
Ian Lynagh [Tue, 12 Dec 2006 15:48:01 +0000 (15:48 +0000)]
Beautify a bit
Ian Lynagh [Tue, 12 Dec 2006 15:43:07 +0000 (15:43 +0000)]
Remove trailing spaces
Ian Lynagh [Tue, 12 Dec 2006 15:42:11 +0000 (15:42 +0000)]
Detab
simonpj@microsoft.com [Tue, 12 Dec 2006 13:28:13 +0000 (13:28 +0000)]
Missed a stage-2 problem in the TcSimplify refactoring
simonpj@microsoft.com [Tue, 12 Dec 2006 13:28:02 +0000 (13:28 +0000)]
Comments only
Simon Marlow [Tue, 12 Dec 2006 10:36:23 +0000 (10:36 +0000)]
MERGE: Fix Windows DEP violations (bug #885)
Original patch by brianlsmith@gmail.com
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.
simonpj@microsoft.com [Tue, 12 Dec 2006 09:25:56 +0000 (09:25 +0000)]
Fix up yesterdays commit to TcSimplify; fixes broken HEAD
simonpj@microsoft.com [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
simonpj@microsoft.com [Mon, 11 Dec 2006 16:43:33 +0000 (16:43 +0000)]
Add comments about pruning implication constraints
wolfgang.thaller@gmx.net [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...)
wolfgang.thaller@gmx.net [Mon, 11 Dec 2006 22:25:34 +0000 (22:25 +0000)]
Support MO_WriteBarrier in PowerPC NCG (lwsync instruction)
Ian Lynagh [Mon, 11 Dec 2006 19:21:03 +0000 (19:21 +0000)]
Fix allocate name clash in the HEAD
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.
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.
simonpj@microsoft.com [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.
simonpj@microsoft.com [Mon, 11 Dec 2006 16:05:57 +0000 (16:05 +0000)]
Improve origin of constraints in subsumption checking
simonpj@microsoft.com [Mon, 11 Dec 2006 16:05:17 +0000 (16:05 +0000)]
Suggests -fglasgow-exts for contexts-differ-in-length error
simonpj@microsoft.com [Mon, 11 Dec 2006 16:04:09 +0000 (16:04 +0000)]
Comments and layout only
simonpj@microsoft.com [Mon, 11 Dec 2006 15:50:35 +0000 (15:50 +0000)]
Remove strange extra print (a temporary debug?)
simonpj@microsoft.com [Fri, 8 Dec 2006 13:48:07 +0000 (13:48 +0000)]
Fix typo
simonpj@microsoft.com [Fri, 8 Dec 2006 13:46:29 +0000 (13:46 +0000)]
Improve parsing for bang patterns (fixes Trac #1041)
wolfgang.thaller@gmx.net [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)
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.
Ian Lynagh [Sat, 9 Dec 2006 17:42:03 +0000 (17:42 +0000)]
Add PowerPC to the list of SMP arches
sven.panne@aedion.de [Sat, 9 Dec 2006 12:51:54 +0000 (12:51 +0000)]
Make './darcs-all get --complete' work
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.
wolfgang.thaller@gmx.net [Thu, 7 Dec 2006 13:31:08 +0000 (13:31 +0000)]
Unbreak previous x86_64 PIC patch
Make things compile on Linux again
wolfgang.thaller@gmx.net [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
case.
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).
wolfgang.thaller@gmx.net [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.
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/
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
conflicts.
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
simonpj@microsoft.com [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.
simonpj@microsoft.com [Mon, 4 Dec 2006 01:31:16 +0000 (01:31 +0000)]
Add documentation for seq
simonpj@microsoft.com [Mon, 4 Dec 2006 01:30:40 +0000 (01:30 +0000)]
Comments only
Ian Lynagh [Tue, 5 Dec 2006 23:52:44 +0000 (23:52 +0000)]
Make a ghc/ghci manpage
Set GhcManpages=YES in mk/build.mk if you want to build the manpage.
Simon Marlow [Tue, 5 Dec 2006 16:24:35 +0000 (16:24 +0000)]
we need GHC.Conc.ensureIOManagerIsRunning on Windows too
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
Simon Marlow [Tue, 5 Dec 2006 15:39:47 +0000 (15:39 +0000)]
update the question about concurrent threads & GHCi
Simon Marlow [Mon, 4 Dec 2006 16:43:26 +0000 (16:43 +0000)]
fix Windows GHCi
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.
sven.panne@aedion.de [Sun, 3 Dec 2006 13:48:24 +0000 (13:48 +0000)]
Fixed and simplified repository calculation, works via SSH now, too
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.
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.
wolfgang.thaller@gmx.net [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.
simonpj@microsoft.com [Fri, 1 Dec 2006 03:42:07 +0000 (03:42 +0000)]
q
Simon Marlow [Tue, 21 Nov 2006 13:26:46 +0000 (13:26 +0000)]
cas(): modify assembly syntax to make it work everywhere (hopefully)
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.
Ian Lynagh [Mon, 9 Oct 2006 12:02:43 +0000 (12:02 +0000)]
Update library version numbers in release notes
Simon Marlow [Fri, 6 Oct 2006 10:45:34 +0000 (10:45 +0000)]
Fix _module_registered bug for sparc linux.
Patch by Ferris McCormick <fmccor@gentoo.org>
This patch has been tested with GHC-6.4.2 where it fixes a
huge number of testsuite failures (down from 406 to 17)
simonpj@microsoft.com [Wed, 29 Nov 2006 22:52:43 +0000 (22:52 +0000)]
Remove trace
simonpj@microsoft.com [Wed, 29 Nov 2006 22:52:23 +0000 (22:52 +0000)]
Remove bogus comment
simonpj@microsoft.com [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!
simonpj@microsoft.com [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.
simonpj@microsoft.com [Wed, 29 Nov 2006 19:42:12 +0000 (19:42 +0000)]
Comments only
simonpj@microsoft.com [Wed, 29 Nov 2006 19:24:21 +0000 (19:24 +0000)]
Make SpecConstr work right for nullary constructors
For totally stupid reasons, SpecConstr didn't work for the (particularly
easy) case of nullary constructors like True and False. I just had some
equations in the wrong order, so that a Var case came first, which
matches a nullary constructor, with the constructor-application case
afterwards.
The fix is easy. I did a bit of refactoring at the same time.
wolfgang.thaller@gmx.net [Wed, 29 Nov 2006 01:34:29 +0000 (01:34 +0000)]
x86_64 NCG: fix register usage for CALLs
For varargs calls, CALL reads the %al register; record that fact for the benefit of the
register allocator.
(There was a previous attempt to do this, but it was broken.)
sof@galois.com [Wed, 29 Nov 2006 22:25:13 +0000 (22:25 +0000)]
Add Win32/configure.ac to the mix
andy@galois.com [Wed, 29 Nov 2006 22:09:57 +0000 (22:09 +0000)]
TickBox representation change
This changes the internal representation of TickBoxes,
from
Note (TickBox "module" n) <expr>
into
case tick<module,n> of
_ -> <expr>
tick has type :: #State #World, when the module and tick numbe
are stored inside IdInfo.
Binary tick boxes change from
Note (BinaryTickBox "module" t f) <expr>
into
btick<module,t,f> <expr>
btick has type :: Bool -> Bool, with the module and tick number
stored inside IdInfo.
andy@galois.com [Wed, 1 Nov 2006 23:08:27 +0000 (23:08 +0000)]
Fixing Alts to reflect Alternatives, rather than every pattern match in Hpc.
Simon Marlow [Wed, 29 Nov 2006 09:32:21 +0000 (09:32 +0000)]
fix to isNormalComment for non-Haddock mode, and some cleanup
Haddock documentation comments weren't being treated as comments even
without the -haddock flag. Fixes nofib/spectral/simple, and probably
others.
Ian Lynagh [Tue, 28 Nov 2006 21:05:16 +0000 (21:05 +0000)]
Make the non-threaded-RTS threadDelay wait at least as long as asked
Kirsten Chevalier [Tue, 28 Nov 2006 13:51:43 +0000 (13:51 +0000)]
retain arity for let-bound vars in simplifier
wolfgang.thaller@gmx.net [Mon, 27 Nov 2006 13:06:02 +0000 (13:06 +0000)]
Initial support for x86_64-darwin
Basic -fvia-C code generation is there, not much testing.
wolfgang.thaller@gmx.net [Fri, 24 Nov 2006 09:41:29 +0000 (09:41 +0000)]
Support I64->I32 casts in the NCG, and use them for I64->Integer conversions
We can avoid using any other long long operations in PrimOps.cmm.
One more step towards compiling the RTS using the NCG.
wolfgang.thaller@gmx.net [Fri, 24 Nov 2006 09:35:36 +0000 (09:35 +0000)]
NCG: Really avoid the need for memory-to-memory moves in the register allocator
This is a follow-up to "NCG: Handle loops in register allocator".
The newly-introduced invariant that every virtual register is always assigned to
the same spill slot wasn't kept under all circumstances.
*Now* memory-to-memory moves should never be required when compiling hand-written
cmm code.
wolfgang.thaller@gmx.net [Mon, 20 Nov 2006 17:25:16 +0000 (17:25 +0000)]
i386-darwin: disable use of code stubs for dynamic linking
We can't use lazy binding for tail-calls accross shared libraries, because dyld
will crash due to incorrect stack layout. We can't get the stack alignment right for
both cross-library tailcalls and foreign calls, so we have to bypass the stub code altogether
and load the address to branch to from the non-lazy pointer table.
wolfgang.thaller@gmx.net [Sun, 22 Oct 2006 16:06:50 +0000 (16:06 +0000)]
Support RelocatableReadOnlyData section type in CmmParse, and use it where needed in AutoApply
This is needed for position-independent code on Mac OS X
(both i386 and powerpc), when compiling the RTS with -fasm.
wolfgang.thaller@gmx.net [Sun, 22 Oct 2006 16:05:07 +0000 (16:05 +0000)]
Cast switch scrutinees to W_ in AutoApply.cmm
... and make CmmLint check for this problem.
This doesn't matter for -fvia-C, but passing a halfword to a switch
will make the NCG generate crashing code.
Ian Lynagh [Sat, 25 Nov 2006 15:23:07 +0000 (15:23 +0000)]
Add some Outputable instances
Ian Lynagh [Sat, 25 Nov 2006 00:34:44 +0000 (00:34 +0000)]
Change a comma to a colon
Lennart Kolmodin [Sun, 5 Nov 2006 18:38:51 +0000 (18:38 +0000)]
ghc-pkg: New command 'check' and made 'list' indicate broken packages
Command 'check': print a list of all packages that are broken and
which dependencies they are missing.
Command 'list': updated by making it put brackets around broken
packages.
simonpj@microsoft.com [Fri, 24 Nov 2006 23:05:48 +0000 (23:05 +0000)]
Fix constraint handling for lazy patterns
Lazy patterns are quite tricky! Consider
f ~(C x) = 3
Can the Num constraint from the 3 be discharged by a Num dictionary
bound by the pattern? Definitely not!
See Note [Hopping the LIE in lazy patterns] in TcPat
The type checker wasn't ensuring this, and that was causing all
manner of strange things to happen. It actually manifested as a
strictness bug reported by Sven Panne.
I've added his test case as tcrun040.
sven.panne@aedion.de [Fri, 24 Nov 2006 17:59:00 +0000 (17:59 +0000)]
Warning police: Removed unused variable
Simon Marlow [Fri, 24 Nov 2006 16:25:12 +0000 (16:25 +0000)]
small stats fix
simonpj@microsoft.com [Fri, 24 Nov 2006 13:20:54 +0000 (13:20 +0000)]
Make SpecConstr more aggressive, by neglecting reboxing
SpecConstr was conservative about avoiding reboxing (see Note [Reboxing])
but that meant it lost useful opportunities. This patch makes it much
more aggressive, but at the risk of doing some reboxing.
Actually, the strictness analyser has the same property (it's possible
for it to generate reboxing code, and thus increase allocation), but we
don't worry so much about that. Maybe we should.
Ideally, one would do some more sophisticated analysis that spotted
the reboxing cases without excluding the useful ones.
But meanwhile, let's try this.
simonpj@microsoft.com [Fri, 24 Nov 2006 13:18:13 +0000 (13:18 +0000)]
Drop redundant parens in pretty-printing