12 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)

12 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

12 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.

12 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.

12 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.

12 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

12 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

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

12 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?)

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

12 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)

12 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)

12 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.

12 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

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

12 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.

12 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

12 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).

12 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.

12 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/

12 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

12 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

12 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.

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

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

12 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.

12 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

12 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

12 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

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

12 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.

12 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

12 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.

12 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.

12 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.

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

12 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)

12 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.

12 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

12 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)

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

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

12 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!

12 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.

12 years agoComments only [Wed, 29 Nov 2006 19:42:12 +0000 (19:42 +0000)] 
Comments only

12 years agoMake SpecConstr work right for nullary constructors [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

The fix is easy.  I did a bit of refactoring at the same time.

12 years agox86_64 NCG: fix register usage for CALLs [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.)

12 years agoAdd Win32/ to the mix [Wed, 29 Nov 2006 22:25:13 +0000 (22:25 +0000)] 
Add Win32/ to the mix

12 years agoTickBox representation change [Wed, 29 Nov 2006 22:09:57 +0000 (22:09 +0000)] 
TickBox representation change

This changes the internal representation of TickBoxes,
        Note (TickBox "module" n)  <expr>

        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>


          btick<module,t,f> <expr>

btick has type :: Bool -> Bool, with the module and tick number
stored inside IdInfo.

12 years agoFixing Alts to reflect Alternatives, rather than every pattern match in Hpc. [Wed, 1 Nov 2006 23:08:27 +0000 (23:08 +0000)] 
Fixing Alts to reflect Alternatives, rather than every pattern match in Hpc.

12 years agofix to isNormalComment for non-Haddock mode, and some cleanup
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

12 years agoMake the non-threaded-RTS threadDelay wait at least as long as asked
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

12 years agoretain arity for let-bound vars in simplifier
Kirsten Chevalier [Tue, 28 Nov 2006 13:51:43 +0000 (13:51 +0000)] 
retain arity for let-bound vars in simplifier

12 years agoInitial support for x86_64-darwin [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.

12 years agoSupport I64->I32 casts in the NCG, and use them for I64->Integer conversions [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.

12 years agoNCG: Really avoid the need for memory-to-memory moves in the register allocator [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.

12 years agoi386-darwin: disable use of code stubs for dynamic linking [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.

12 years agoSupport RelocatableReadOnlyData section type in CmmParse, and use it where needed... [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.

12 years agoCast switch scrutinees to W_ in AutoApply.cmm [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.

12 years agoAdd some Outputable instances
Ian Lynagh [Sat, 25 Nov 2006 15:23:07 +0000 (15:23 +0000)] 
Add some Outputable instances

12 years agoChange a comma to a colon
Ian Lynagh [Sat, 25 Nov 2006 00:34:44 +0000 (00:34 +0000)] 
Change a comma to a colon

12 years agoghc-pkg: New command 'check' and made 'list' indicate broken packages
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

12 years agoFix constraint handling for lazy patterns [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.

12 years agoWarning police: Removed unused variable [Fri, 24 Nov 2006 17:59:00 +0000 (17:59 +0000)] 
Warning police: Removed unused variable

12 years agosmall stats fix
Simon Marlow [Fri, 24 Nov 2006 16:25:12 +0000 (16:25 +0000)] 
small stats fix

12 years agoMake SpecConstr more aggressive, by neglecting reboxing [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.

12 years agoDrop redundant parens in pretty-printing [Fri, 24 Nov 2006 13:18:13 +0000 (13:18 +0000)] 
Drop redundant parens in pretty-printing

12 years agoImprove handling of implicit parameters [Fri, 24 Nov 2006 12:21:20 +0000 (12:21 +0000)] 
Improve handling of implicit parameters

A message to Haskell Cafe from Grzegorz Chrupala made me realise that
GHC was not handling implicit parameters correctly, when it comes to
choosing the variables to quantify, and ambiguity tests.  Here's the
note I added to TcSimplify:

Note [Implicit parameters and ambiguity]
What type should we infer for this?
f x = (show ?y, x::Int)
Since we must quantify over the ?y, the most plausible type is
f :: (Show a, ?y::a) => Int -> (String, Int)
But notice that the type of the RHS is (String,Int), with no type
varibables mentioned at all!  The type of f looks ambiguous.  But
it isn't, because at a call site we might have
let ?y = 5::Int in f 7
and all is well.  In effect, implicit parameters are, well, parameters,
so we can take their type variables into account as part of the
"tau-tvs" stuff.  This is done in the function 'FunDeps.grow'.

The actual changes are in FunDeps.grow, and the tests are
tc219, tc219

12 years agoFix name-capture bug in rule matching [Fri, 24 Nov 2006 11:11:58 +0000 (11:11 +0000)] 
Fix name-capture bug in rule matching

The matching algorithm for RULES should respect alpha-conversion, but it
wasn't doing so.  In particular, if the names of the template variables
clashed with a variable in scope at the call site, bad things could happen
(it showed up as a CoreLint failure when compiling nofib/real/parser)

This patch fixes the problem; see Note [Template binders]

Test is in simplCore/should_compile/spec002, but nofib -O2 in
real/parser, real/fulsom

12 years agoImprove hashing of expressions [Fri, 24 Nov 2006 11:09:26 +0000 (11:09 +0000)] 
Improve hashing of expressions

We were getting too many cases where different expressions map to the
same hash code (which shows up in CSE). This patch tries to improve
the hash algorithm a bit.

12 years agoUse existing Ord instance on Int, saving code [Fri, 24 Nov 2006 11:08:30 +0000 (11:08 +0000)] 
Use existing Ord instance on Int, saving code

12 years agoUse existing function uniqAway instead of duplicating code [Fri, 24 Nov 2006 11:07:50 +0000 (11:07 +0000)] 
Use existing function uniqAway instead of duplicating code

12 years agoGather constraints in program order [Fri, 24 Nov 2006 08:40:11 +0000 (08:40 +0000)] 
Gather constraints in program order

Provoked by a suggestion of Simon's, this patch makes a half-hearted attempt
to gather constraints in program order, so that we tend to report an error
at its first occurrence, rather than its last.  Examples:
mdofail001, tcfail015

It's "half-hearted" because generally-speaking the typechecker does not
guaranteed to keep constraints in order; it treats them as a set.  Nevertheless
this very small change seems to improve matters, so it seems a good one.

12 years agoSimplify TcSimplify, by removing Free [Thu, 23 Nov 2006 17:16:02 +0000 (17:16 +0000)] 
Simplify TcSimplify, by removing Free

For a long time TcSimplify used a three-way classification of constraints,
into  Free
(see the data type WhatToDo).  In the new world of implication constraints,
the Free case does not make so much sense, and I managed to elminate it
altogether, thus simplifying the story somewhat.  Now WhatToDo has constructors

There should be no change in behaviour.

12 years agofix failing assertion
Simon Marlow [Thu, 23 Nov 2006 13:58:25 +0000 (13:58 +0000)] 
fix failing assertion

12 years agoImprove recovery in hptRules [Wed, 22 Nov 2006 17:34:15 +0000 (17:34 +0000)] 
Improve recovery in hptRules

12 years agoRefactoring of where tcSimplifyTop happens [Wed, 22 Nov 2006 13:51:21 +0000 (13:51 +0000)] 
Refactoring of where tcSimplifyTop happens

We want to do tcSimplifyTop after checkMain, because checkMain can add
useful type information that eliminates ambiguity.  E.g.
main = return undefined

This is the way it used to be in 6.6, and I think I mistakenly moved it
when doing implication constraints. This patch effectively puts it back
the way it was.

Cures the cg053 failure.

12 years agoRetain simplifications of implication constraints [Wed, 22 Nov 2006 13:28:44 +0000 (13:28 +0000)] 
Retain simplifications of implication constraints

When simplifying an implication constraint (reduceImplication), if we make
progress, make a new implication constraint for the result.  If we don't
do this, we get a constraint that can be simplified in a unique way,
and that in turn confuses reportNoInstance

12 years agoImprove error messages slightly [Wed, 22 Nov 2006 13:28:21 +0000 (13:28 +0000)] 
Improve error messages slightly

12 years agorefactor code for memInventory()
Simon Marlow [Wed, 22 Nov 2006 10:19:06 +0000 (10:19 +0000)] 
refactor code for memInventory()

12 years agoallocatePinned(): fix n_large_blocks count after allocating a new block
Simon Marlow [Wed, 22 Nov 2006 10:18:08 +0000 (10:18 +0000)] 
allocatePinned(): fix n_large_blocks count after allocating a new block

12 years agofix bug in memInventory() giving false memory leak errors
Simon Marlow [Wed, 22 Nov 2006 10:16:04 +0000 (10:16 +0000)] 
fix bug in memInventory() giving false memory leak errors
fixes ffi009(threaded1)

12 years agoRemove the concept of stableRoots.
Lemmih [Tue, 21 Nov 2006 19:37:01 +0000 (19:37 +0000)] 
Remove the concept of stableRoots.

StableRoots opened new possibilities in the world
of plugins with their ability to link partially
applied closures against object code.
Exporting '(fn pluginwideState)' severely reduced
the complexity of HIDE's plugin system. The previous
system of global variables was both fragile and hard
to scale.

Good bye, StableRoots. We sure had some fun.

12 years agosmall fix to DEBUG case in coalesce/freeGroup patch
Simon Marlow [Tue, 21 Nov 2006 16:34:16 +0000 (16:34 +0000)] 
small fix to DEBUG case in coalesce/freeGroup patch

12 years agooptimisation to freeGroup() to avoid an O(N^2) pathalogical case
Simon Marlow [Tue, 21 Nov 2006 13:45:51 +0000 (13:45 +0000)] 
optimisation to freeGroup() to avoid an O(N^2) pathalogical case
In the free list, we don't strictly speaking need to have every block
in a coalesced group point to the head block, although this is an
invariant for non-free blocks.  Dropping this invariant for the free
list means that coalesce() is O(1) rather than O(N), and freeGroup()
is therefore O(N) not O(N^2).

The bad case probably didn't happen most of the time, indeed it has
never shown up in a profile that I've seen.  I had a report from a
while back that this was a problem with really large heaps, though.
Fortunately the fix is easy.

12 years agoFix ":i Maybe", noticed by Claus Reinke
Ian Lynagh [Tue, 21 Nov 2006 13:21:32 +0000 (13:21 +0000)] 
Fix ":i Maybe", noticed by Claus Reinke
It looks like this was just commented out while FC was being developed.

12 years agoput the unsafeCoerce trace inside DEBUG, to avoid test failures
Simon Marlow [Tue, 21 Nov 2006 09:37:48 +0000 (09:37 +0000)] 
put the unsafeCoerce trace inside DEBUG, to avoid test failures

12 years agoFix printf$LDBLStub workaround for Darwin [Tue, 21 Nov 2006 00:49:53 +0000 (00:49 +0000)] 
Fix printf$LDBLStub workaround for Darwin

Apparently, the original fix never really worked due to typos and oversights.

12 years agoMac OS X mangler: follow some minor gcc changes [Mon, 20 Nov 2006 17:15:53 +0000 (17:15 +0000)] 
Mac OS X mangler: follow some minor gcc changes

12 years agoAdd ppr for the MKPAP case, and rearrange the other cases to match the datatype
Ian Lynagh [Mon, 20 Nov 2006 15:53:52 +0000 (15:53 +0000)] 
Add ppr for the MKPAP case, and rearrange the other cases to match the datatype

12 years agoAvoid problems with unaligned loads on alpha/mips/mipsel/arm
Ian Lynagh [Mon, 20 Nov 2006 15:49:14 +0000 (15:49 +0000)] 
Avoid problems with unaligned loads on alpha/mips/mipsel/arm
This is overly conservative, but it works.

12 years agoreorganise PAPI configuration: off by default, even if library is found
Simon Marlow [Mon, 20 Nov 2006 14:36:57 +0000 (14:36 +0000)] 
reorganise PAPI configuration: off by default, even if library is found
Add GhcRtsWithPapi=YES to mk/ to turn it on

12 years agoNo special Papi measurements taken by default [Thu, 9 Nov 2006 08:11:20 +0000 (08:11 +0000)] 
No special Papi measurements taken by default

12 years agowhitespace
Simon Marlow [Mon, 20 Nov 2006 14:25:50 +0000 (14:25 +0000)] 

12 years agoCosmetic improvements, no change in Papi functionality. [Thu, 9 Nov 2006 08:04:00 +0000 (08:04 +0000)] 
Cosmetic improvements, no change in Papi functionality.

12 years agobetter error messages when PAPI_library_init() fails
Simon Marlow [Mon, 20 Nov 2006 14:27:38 +0000 (14:27 +0000)] 
better error messages when PAPI_library_init() fails

12 years agoalter PAPI help message slightly
Simon Marlow [Mon, 20 Nov 2006 14:27:22 +0000 (14:27 +0000)] 
alter PAPI help message slightly

12 years agoAdded configure gadgets to detect Papi, and fixed build problems
'Alexey Rodriguez [Thu, 9 Nov 2006 12:04:14 +0000 (12:04 +0000)] 
Added configure gadgets to detect Papi, and fixed build problems

12 years agoSelection of PAPI events via RTS command line [Thu, 9 Nov 2006 07:57:46 +0000 (07:57 +0000)] 
Selection of PAPI events via RTS command line

12 years agoAddition of PAPI to RTS [Wed, 8 Nov 2006 17:14:52 +0000 (17:14 +0000)] 
Addition of PAPI to RTS
This patch still requires the addition of the USE_PAPI
define to compile with PAPI. Also, programs must be
compiled and linked with the appropriate library flags
for papi.