ghc-hetmet.git
17 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

17 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
                packages.

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

17 years agoWarning police: Removed unused variable
sven.panne@aedion.de [Fri, 24 Nov 2006 17:59:00 +0000 (17:59 +0000)]
Warning police: Removed unused variable

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

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

17 years agoDrop redundant parens in pretty-printing
simonpj@microsoft.com [Fri, 24 Nov 2006 13:18:13 +0000 (13:18 +0000)]
Drop redundant parens in pretty-printing

17 years agoImprove handling of implicit parameters
simonpj@microsoft.com [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

17 years agoFix name-capture bug in rule matching
simonpj@microsoft.com [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

17 years agoImprove hashing of expressions
simonpj@microsoft.com [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.

17 years agoUse existing Ord instance on Int, saving code
simonpj@microsoft.com [Fri, 24 Nov 2006 11:08:30 +0000 (11:08 +0000)]
Use existing Ord instance on Int, saving code

17 years agoUse existing function uniqAway instead of duplicating code
simonpj@microsoft.com [Fri, 24 Nov 2006 11:07:50 +0000 (11:07 +0000)]
Use existing function uniqAway instead of duplicating code

17 years agoGather constraints in program order
simonpj@microsoft.com [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.

17 years agoSimplify TcSimplify, by removing Free
simonpj@microsoft.com [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
Irred
ReduceMe
(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
Stop
ReduceMe

There should be no change in behaviour.

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

17 years agoImprove recovery in hptRules
simonpj@microsoft.com [Wed, 22 Nov 2006 17:34:15 +0000 (17:34 +0000)]
Improve recovery in hptRules

17 years agoRefactoring of where tcSimplifyTop happens
simonpj@microsoft.com [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.

17 years agoRetain simplifications of implication constraints
simonpj@microsoft.com [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

17 years agoImprove error messages slightly
simonpj@microsoft.com [Wed, 22 Nov 2006 13:28:21 +0000 (13:28 +0000)]
Improve error messages slightly

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

17 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

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

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

17 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

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

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

17 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

17 years agoFix printf$LDBLStub workaround for Darwin
wolfgang.thaller@gmx.net [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.

17 years agoMac OS X mangler: follow some minor gcc changes
wolfgang.thaller@gmx.net [Mon, 20 Nov 2006 17:15:53 +0000 (17:15 +0000)]
Mac OS X mangler: follow some minor gcc changes

17 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

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

17 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/build.mk to turn it on

17 years agoNo special Papi measurements taken by default
mrchebas@gmail.com [Thu, 9 Nov 2006 08:11:20 +0000 (08:11 +0000)]
No special Papi measurements taken by default

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

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

17 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

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

17 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

17 years agoSelection of PAPI events via RTS command line
mrchebas@gmail.com [Thu, 9 Nov 2006 07:57:46 +0000 (07:57 +0000)]
Selection of PAPI events via RTS command line

17 years agoAddition of PAPI to RTS
mrchebas@gmail.com [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.

17 years agoDon't force -static on mips
Ian Lynagh [Mon, 20 Nov 2006 12:23:05 +0000 (12:23 +0000)]
Don't force -static on mips

17 years agoDon't make ghc threaded if GhcNotThreaded is YES
Ian Lynagh [Mon, 20 Nov 2006 12:16:31 +0000 (12:16 +0000)]
Don't make ghc threaded if GhcNotThreaded is YES

17 years agoCope with big endian float word order on little endian machines
Ian Lynagh [Mon, 20 Nov 2006 12:13:09 +0000 (12:13 +0000)]
Cope with big endian float word order on little endian machines

17 years agoEmit .bat versions of -inplace scripts on Windows platforms (Cabal-friendlier)
sof@galois.com [Fri, 17 Nov 2006 01:23:43 +0000 (01:23 +0000)]
Emit .bat versions of -inplace scripts on Windows platforms (Cabal-friendlier)

17 years agoEmit .bat version of -inplace script on Windows platforms
sof@galois.com [Fri, 17 Nov 2006 01:22:39 +0000 (01:22 +0000)]
Emit .bat version of -inplace script on Windows platforms

17 years agorestore compilation with 5.04
Simon Marlow [Wed, 15 Nov 2006 10:43:22 +0000 (10:43 +0000)]
restore compilation with 5.04

17 years agoremove unused includes, now that Storage.h & Stable.h are included by Rts.h
Simon Marlow [Wed, 15 Nov 2006 10:41:11 +0000 (10:41 +0000)]
remove unused includes, now that Storage.h & Stable.h are included by Rts.h

17 years agomove newSpark() prototype to RtsExternal.h to avoid warnings
Simon Marlow [Tue, 7 Nov 2006 11:54:30 +0000 (11:54 +0000)]
move newSpark() prototype to RtsExternal.h to avoid warnings

17 years agomark stop event handle as invalid once closed, making shutdowns more graceful.
sof@galois.com [Mon, 16 Oct 2006 22:35:16 +0000 (22:35 +0000)]
mark stop event handle as invalid once closed, making shutdowns more graceful.

17 years agosimplify the generated C a little by removing some casts.
Simon Marlow [Tue, 14 Nov 2006 16:28:46 +0000 (16:28 +0000)]
simplify the generated C a little by removing some casts.

17 years agofix types in generated C for comparison MachOps
Simon Marlow [Tue, 14 Nov 2006 16:00:27 +0000 (16:00 +0000)]
fix types in generated C for comparison MachOps
C comparisons have type 'int', but our generated code assumed they had
type 'StgWord', leading to (very) occasional warnings from gcc.

17 years agoRemove unused Name imort, and add a comment explaining why pragmas are disabled
Ian Lynagh [Tue, 14 Nov 2006 13:14:59 +0000 (13:14 +0000)]
Remove unused Name imort, and add a comment explaining why pragmas are disabled

17 years agoDocument new -L RTS flag
Ian Lynagh [Tue, 14 Nov 2006 11:35:42 +0000 (11:35 +0000)]
Document new -L RTS flag

17 years agoBe compatible with older C standards
Ian Lynagh [Tue, 14 Nov 2006 11:25:14 +0000 (11:25 +0000)]
Be compatible with older C standards

17 years agohp2ps_config_mk
Ravi Nanavati [Fri, 29 Sep 2006 22:54:18 +0000 (22:54 +0000)]
hp2ps_config_mk

Add variables for hp2ps to config.mk.in

17 years agohp_slash_fix
Ravi Nanavati [Fri, 29 Sep 2006 22:53:24 +0000 (22:53 +0000)]
hp_slash_fix

Fix output of cost-centre stacks so that the slashes appear in the correct place

Please include this patch in the 6.6 branch as well as HEAD

17 years agorts_ccs_length
Ravi Nanavati [Fri, 29 Sep 2006 22:51:15 +0000 (22:51 +0000)]
rts_ccs_length

Add the -L RTS flag to control the length of the cost-centre stacks reported in
a heap profile.

Please include this change in the 6.6 branch as well as HEAD

17 years agomultipage_hp2ps
Ravi Nanavati [Fri, 29 Sep 2006 22:47:39 +0000 (22:47 +0000)]
multipage_hp2ps

Add support for splitting the key index over multiple pages in hp2ps
Multipage support can be requested with the -M command-line flag
or inferred if the number of bands requested is greater than 20
(the limit on the number of bands displayed has been removed)

Please include this change in the 6.6 branch as well as HEAD

17 years agoFix (yet another) odd interaction between selector thunks and compacting GC
Simon Marlow [Tue, 14 Nov 2006 12:31:57 +0000 (12:31 +0000)]
Fix (yet another) odd interaction between selector thunks and compacting GC
This should fix errors of the form

  internal error: scavenge_mark_stack: unimplemented/strange closure
    type 28 @ 0x2b92e5f79960

But since it's quite difficult to reproduce the error, I can't be 100%
certain it's gone.  I certainly can't reproduce it again after the
fix, anyway.

17 years agoAdd literal-shift rewrite rules
simonpj@microsoft.com [Mon, 13 Nov 2006 09:35:01 +0000 (09:35 +0000)]
Add literal-shift rewrite rules

This is a re-factored version of Sam Bronson's patch

Need to take care with logical shifts.

17 years agoFixups to PelRules (esp using intResult, wordResult)
simonpj@microsoft.com [Mon, 13 Nov 2006 09:05:17 +0000 (09:05 +0000)]
Fixups to PelRules (esp using intResult, wordResult)

In PrelRules we carefully use 'intResult' to trim off the overflow in
compile-time calculations, but we were not doing so consistently.  This
patch fixes that, I think, and adds type signatures

17 years agoFix typo "comand" (trac #965)
Ian Lynagh [Sun, 12 Nov 2006 17:09:46 +0000 (17:09 +0000)]
Fix typo "comand" (trac #965)

17 years agoZap stray whitespace in lhs formatting
Samuel Bronson [Fri, 10 Nov 2006 18:36:33 +0000 (18:36 +0000)]
Zap stray whitespace in lhs formatting

17 years agoFix up .lhs delimiters a bit
Samuel Bronson [Sat, 4 Nov 2006 01:56:42 +0000 (01:56 +0000)]
Fix up .lhs delimiters a bit

17 years agofind fop.sh
claus.reinke@talk21.com [Thu, 9 Nov 2006 16:40:54 +0000 (16:40 +0000)]
find fop.sh

the fop bundle contains fop.bat and fop.sh, but not fop;
let configuration find the latter.

17 years agoDoc nit in OccName
Samuel Bronson [Wed, 8 Nov 2006 19:21:15 +0000 (19:21 +0000)]
Doc nit in OccName

17 years agoRemove STANDALONE_PACKAGE bits that had escaped the removal
Ian Lynagh [Fri, 10 Nov 2006 18:20:50 +0000 (18:20 +0000)]
Remove STANDALONE_PACKAGE bits that had escaped the removal

17 years agoMake StablePtr and friends visible, this seems to be necessary for 64bit architectures
sven.panne@aedion.de [Fri, 10 Nov 2006 17:16:26 +0000 (17:16 +0000)]
Make StablePtr and friends visible, this seems to be necessary for 64bit architectures

17 years agoMake all needed prototypes visible to avoid warnings
sven.panne@aedion.de [Fri, 10 Nov 2006 16:27:43 +0000 (16:27 +0000)]
Make all needed prototypes visible to avoid warnings

17 years agoAdded a comment about se.info.type being used uninitialized
sven.panne@aedion.de [Fri, 10 Nov 2006 16:26:54 +0000 (16:26 +0000)]
Added a comment about se.info.type being used uninitialized

17 years agoAdded a workaround for format specifier mismatch
sven.panne@aedion.de [Fri, 10 Nov 2006 16:26:16 +0000 (16:26 +0000)]
Added a workaround for format specifier mismatch

17 years agoUse implication constraints to improve type inference
simonpj@microsoft.com [Fri, 10 Nov 2006 13:31:23 +0000 (13:31 +0000)]
Use implication constraints to improve type inference

17 years agoCosmetics and debug printing only
simonpj@microsoft.com [Fri, 10 Nov 2006 13:15:13 +0000 (13:15 +0000)]
Cosmetics and debug printing only

17 years agoCosmetics only
simonpj@microsoft.com [Fri, 10 Nov 2006 13:13:45 +0000 (13:13 +0000)]
Cosmetics only

17 years agoAdd HsUtils.unguardedGRHSs, and use it
simonpj@microsoft.com [Fri, 10 Nov 2006 13:12:50 +0000 (13:12 +0000)]
Add HsUtils.unguardedGRHSs, and use it

17 years agoComments and cosmetics only
simonpj@microsoft.com [Fri, 10 Nov 2006 13:10:36 +0000 (13:10 +0000)]
Comments and cosmetics only

17 years agoAdd new utility function, partitionWith
simonpj@microsoft.com [Fri, 10 Nov 2006 13:08:36 +0000 (13:08 +0000)]
Add new utility function, partitionWith

17 years agoTrim imports
simonpj@microsoft.com [Fri, 10 Nov 2006 13:08:14 +0000 (13:08 +0000)]
Trim imports

17 years agoPatch to demand analyser, to handle polymorphism in zipWithDmds
simonpj@microsoft.com [Fri, 10 Nov 2006 13:07:26 +0000 (13:07 +0000)]
Patch to demand analyser, to handle polymorphism in zipWithDmds

17 years agoDo not print HsDoc field when pretty-printing patterns (messes up error message)
simonpj@microsoft.com [Wed, 8 Nov 2006 09:48:13 +0000 (09:48 +0000)]
Do not print HsDoc field when pretty-printing patterns (messes up error message)

17 years agouse the right $(HC) for stage 3
Simon Marlow [Thu, 9 Nov 2006 10:17:53 +0000 (10:17 +0000)]
use the right $(HC) for stage 3

17 years agoremove unused STANDALONE_PACKAGE stuff
Simon Marlow [Thu, 9 Nov 2006 10:17:29 +0000 (10:17 +0000)]
remove unused STANDALONE_PACKAGE stuff

17 years agoupdate flag settings after files were relocated
Simon Marlow [Wed, 8 Nov 2006 10:38:06 +0000 (10:38 +0000)]
update flag settings after files were relocated

17 years agoComment out deeply suspicious (and unused) function insertStableSymbol
simonpj@microsoft.com [Tue, 7 Nov 2006 17:13:36 +0000 (17:13 +0000)]
Comment out deeply suspicious (and unused) function insertStableSymbol

The function insertStableSymbol looks utterly wrong, because it
coerces a value of type 'a' to an Addr#!  That was in turn making the
code generator get confused (now improved), but since insertStableSymbol
isn't used at all, I'm just commenting it out.

Meanwhile, this patch also enhances CoreToStg to report the most egregious
cases where an unsafe coerce is going to confuse the code generator.

17 years agoLayout and comments only
simonpj@microsoft.com [Tue, 7 Nov 2006 17:10:40 +0000 (17:10 +0000)]
Layout and comments only

17 years agoWarn only of explicit imports that are unused (test is mod177)
simonpj@microsoft.com [Mon, 6 Nov 2006 16:12:12 +0000 (16:12 +0000)]
Warn only of explicit imports that are unused (test is mod177)

This is really a long-standing bug.  See test mod177.

17 years agoVarious debugging print changes; nothing exciting
simonpj@microsoft.com [Mon, 6 Nov 2006 16:02:44 +0000 (16:02 +0000)]
Various debugging print changes; nothing exciting

17 years agoTidy up substitutions
simonpj@microsoft.com [Mon, 6 Nov 2006 15:59:01 +0000 (15:59 +0000)]
Tidy up substitutions

The new simplifer stuff exposed the fact that the invariants on the
TvSubstEnv and IdSubstEnv were insufficiently explicit.  (Resulted in
a bug found by Sam Brosnon.)

This patch fixes the bug, and tries to document the invariants pretty
thoroughly. See
Note [Extending the TvSubst] in Type
Note [Extenting the Subst]   in CoreSubst

(Most of the new lines are comments.)

17 years agoGet External Core (-fext-core) working with readline
Samuel Bronson [Wed, 1 Nov 2006 00:36:49 +0000 (00:36 +0000)]
Get External Core (-fext-core) working with readline
Had to add support for dynamic C calls and for foreign labels (Addr#
constants). Actually I only did the printing side -- parsing is not
done yet. But at least now you can build the libraries with -fext-core.

I also got the function arrow to print out properly again (it was
printing fully-qualified and z-coded!)

I also added a field for calling convention name to the External
data constructor in ExternalCore.Exp (for static C calls).

I'm not exactly sure where to document all of this, so I haven't done
that, though I did comment the code a bit.

17 years agoRemove pre-5.04 code
Ian Lynagh [Tue, 24 Oct 2006 01:10:26 +0000 (01:10 +0000)]
Remove pre-5.04 code

17 years agoMajor overhaul of the Simplifier
simonpj@microsoft.com [Wed, 1 Nov 2006 16:43:29 +0000 (16:43 +0000)]
Major overhaul of the Simplifier

This big patch completely overhauls the Simplifier.  The simplifier
had grown old and crufty, and was hard to understand and maintain.
This new version is still quite complicated, because the simplifier
does a lot, but it's much easier to understand, for me at least.

It does mean that I have touched almost every line of the simplifier,
so the diff is a large one.

Big changes are these

* When simplifying an Expr we generate a simplified Expr plus a
  bunch of "floats", which are bindings that have floated out
  of the Expr.  Before, this float stuff was returned separately,
  but not they are embedded in the SimplEnv, which makes the
  plumbing much easier and more robust.  In particular, the
  SimplEnv already meaintains the "in-scope set", and making
  that travel with the floats helps to ensure that we always
  use the right in-scope set.

  This change has a pervasive effect.

* Rather than simplifying the args of a call before trying rules
  and inlining, we now defer simplifying the args until both
  rules and inlining have failed, so we're going to leave a
  call in the result.  This avoids the risk of repeatedly
  simplifying an argument, which was handled by funny ad-hoc
  flags before.

  The downside is that we must apply the substitution to the args before
  rule-matching; and if thep rule doesn't match that is wasted work.
  But having any rules at all is the exception not the rule, and the
  substitution is lazy, so we only substitute until a no-match is found.
  The code is much more elegant though.

* A SimplCont is now more zipper-like. It used to have an embedded
  function, but that was a bit hard to think about, and now it's
  nice and consistent. The relevant constructors are StrictArg
  and StrictBind

* Each Rule now has an *arity* (gotten by CoreSyn.ruleArity), which
  tells how many arguments it matches against.  This entailed adding
  a field ru_nargs to a BuiltinRule.  And that made me look at
  PrelRules; I did quite a bit of refactoring in the end, so the
  diff in PrelRules looks much biggger than it really is.

* A little refactoring in OccurAnal.  The key change is that in
  the RHS of x = y `cast` co
  we regard 'y' as "many", so that it doesn't get inlined into
  the RHS of x.  This allows x to be inlined elsewhere.  It's
  very like the existing situation for
x = Just y
  where we treat 'y' as "many".

17 years agoImprove error message from ghc --make when filename and modulename differ
simonpj@microsoft.com [Thu, 2 Nov 2006 12:31:11 +0000 (12:31 +0000)]
Improve error message from ghc --make when filename and modulename differ

17 years agoImprove handling of unused imports (test is mod75)
simonpj@microsoft.com [Thu, 2 Nov 2006 12:04:41 +0000 (12:04 +0000)]
Improve handling of unused imports (test is mod75)

17 years agoRemove unused lookupDeprec function
simonpj@microsoft.com [Thu, 2 Nov 2006 12:04:02 +0000 (12:04 +0000)]
Remove unused lookupDeprec function

17 years agoFix handling of non-in-scope exports (fixes test mod7)
simonpj@microsoft.com [Thu, 2 Nov 2006 12:03:04 +0000 (12:03 +0000)]
Fix handling of non-in-scope exports (fixes test mod7)

17 years agoComments and layout only
simonpj@microsoft.com [Thu, 2 Nov 2006 09:39:54 +0000 (09:39 +0000)]
Comments and layout only

17 years agoimport Maybes wibble
sof@galois.com [Wed, 1 Nov 2006 22:11:08 +0000 (22:11 +0000)]
import Maybes wibble

17 years agoadd a few #includes to make it compile
sof@galois.com [Wed, 1 Nov 2006 22:09:50 +0000 (22:09 +0000)]
add a few #includes to make it compile

17 years agoTrim imports
simonpj@microsoft.com [Wed, 1 Nov 2006 17:34:39 +0000 (17:34 +0000)]
Trim imports

17 years agoDefault the kind of unconstrained meta-type variables before tcSimplifyTop
simonpj@microsoft.com [Wed, 1 Nov 2006 17:33:25 +0000 (17:33 +0000)]
Default the kind of unconstrained meta-type variables before tcSimplifyTop

This patch fixes a long standing bug, Trac #179,
and a recently reported one, Trac #963.

The problem in both cases was an unconstrained type variable 'a', of kind
argTypeKind (printed "??") or openTypeKind ("?").  At top level we now default
the kind of such variables to liftedTypeKind ("*").  This is important because
then instance declarations can match it. The defaulting function is called
TcMType.zonkTopTyVar, and is commented.  (Most of the extra lines in the
patch are comments!)