Manuel M T Chakravarty [Mon, 16 Oct 2006 19:40:48 +0000 (19:40 +0000)]
Stage 2 fix to "Keep track of family instance modules"
Simon Marlow [Mon, 16 Oct 2006 15:19:35 +0000 (15:19 +0000)]
remove use of FiniteMap, use Text.Printf
Simon Marlow [Mon, 16 Oct 2006 15:08:02 +0000 (15:08 +0000)]
fix a regular expression in banner_re
Samuel Bronson [Sat, 14 Oct 2006 17:58:55 +0000 (17:58 +0000)]
Try to get the right output for nofib-analyse
Samuel Bronson [Sat, 14 Oct 2006 16:34:42 +0000 (16:34 +0000)]
Get nofib-analyse to build with 6.4 at least...
Samuel Bronson [Mon, 16 Oct 2006 13:00:04 +0000 (13:00 +0000)]
Don't squish "Inlined fn" into the right margin quite as much in trace output
Simon Marlow [Mon, 16 Oct 2006 11:20:45 +0000 (11:20 +0000)]
Fix build on x86_64
Simon Marlow [Mon, 16 Oct 2006 11:17:41 +0000 (11:17 +0000)]
Fix deadlock on second call to newSession
Tracked down by Krasimir Angelov
Simon Marlow [Mon, 16 Oct 2006 11:09:26 +0000 (11:09 +0000)]
Build the GHC package in stage 3 too
This fixes the problem with the nightly builds not including the GHC
package.
Simon Marlow [Fri, 13 Oct 2006 13:53:18 +0000 (13:53 +0000)]
more fixups to make a stage 3 build do the right thing with the ghc package
Simon Marlow [Fri, 13 Oct 2006 13:44:43 +0000 (13:44 +0000)]
use the correct $(HC)
Simon Marlow [Fri, 6 Oct 2006 10:51:48 +0000 (10:51 +0000)]
remove unused origPkgIdMap field from PackageState
Simon Marlow [Fri, 6 Oct 2006 10:42:21 +0000 (10:42 +0000)]
Cache the package database the first time it is read
This was a slight oversight on my part, I intended to store the
pristine database in the pkgDatabase of DynFlags, but managed to
forget to do it.
Simon Marlow [Mon, 16 Oct 2006 10:58:52 +0000 (10:58 +0000)]
fix non-DEBUG build (probably my fault, sorry)
simonpj@microsoft.com [Fri, 13 Oct 2006 16:24:34 +0000 (16:24 +0000)]
Add assertion checks for mkCoVar/mkTyVar
A type variable has a flag saying whether it is a *type* variable or
a *coercion* variable. This patch adds assertions to check the flag.
And it adds fixes to places which were Wrong (and hence fired the
assertion)!
Also removed isCoVar from Coercion, since it's done by Var.isCoVar.
Ian Lynagh [Fri, 13 Oct 2006 13:15:14 +0000 (13:15 +0000)]
Uncomment code to emit a space in place of a '>' in literate scripts
This fixes trac #210. Test is read041.
simonpj@microsoft.com [Fri, 13 Oct 2006 11:58:01 +0000 (11:58 +0000)]
Change type of TcGadt.refineType, plus consequences
simonpj@microsoft.com [Fri, 13 Oct 2006 09:42:30 +0000 (09:42 +0000)]
More refactoring in RnNames
I rather self-indulgently spent a chunk of yesterday working on
refactoring RnNames further. The result is significantly simpler:
* A GlobalRdrElt gets an extra field, gre_par, which records
the parent (if any) of the name
* ImportAvails has two fields deleted: imp_env and imp_parent.
The information provided by these fields was only used when
processing the export list; and the same information is now readily
generated from the GlobalRdrElts in the GlobalRdrEnv
I also did some tidying up; notably moving AvailEnv stuff from
TcRnTypes to RnNames.
The result is tha the compiler is some 130 lines shorter than before
Manuel M T Chakravarty [Fri, 13 Oct 2006 00:42:23 +0000 (00:42 +0000)]
Keep track of family instance modules
- Now each modules carries
(1) a flag saying whether it contains family instance declarations and
(2) a list of all modules further down in the import tree that contain
family instance declarations.
(The information is split into these two parts for the exact same reasons why
the info about orphan modules is split, too.)
- This is the first step to *optimised* overlap checking of family instances
coming from imported modules.
*** WARNING: This patch changes the interface file format! ***
*** Recompile libraries and stage2 from scratch! ***
Manuel M T Chakravarty [Thu, 12 Oct 2006 20:37:37 +0000 (20:37 +0000)]
Overlap check for family instances def'd in current module
- All family instances are checked for overlap when entered into TcGblEnv.
Their are checked against all instances in the EPS and those currently in
the TcGblEnv.
simonpj@microsoft.com [Thu, 12 Oct 2006 16:02:54 +0000 (16:02 +0000)]
Comments only
simonpj@microsoft.com [Wed, 11 Oct 2006 11:23:05 +0000 (11:23 +0000)]
Make Inst into a record type to ease subsequent changes
simonpj@microsoft.com [Wed, 11 Oct 2006 11:22:42 +0000 (11:22 +0000)]
Improve pretty-printing slightly
simonpj@microsoft.com [Wed, 11 Oct 2006 11:22:24 +0000 (11:22 +0000)]
Add comments about primop rules
Simon Marlow [Thu, 12 Oct 2006 11:07:11 +0000 (11:07 +0000)]
fix definition of fib in example code
sven.panne@aedion.de [Thu, 12 Oct 2006 12:12:13 +0000 (12:12 +0000)]
Track changes in source packaging scheme
Simon Marlow [Thu, 12 Oct 2006 11:07:11 +0000 (11:07 +0000)]
fix definition of fib in example code
Ian Lynagh [Thu, 12 Oct 2006 01:39:01 +0000 (01:39 +0000)]
Partially fix GHCi when unregisterised
We were constructing info tables designed for TABLES_NEXT_TO_CODE,
but were building without TABLES_NEXT_TO_CODE.
This patch also fixes a bug when we are unregisterised on amd64 and
have code with an address above 2^32.
Simon Marlow [Wed, 11 Oct 2006 20:01:10 +0000 (20:01 +0000)]
More import tidying and fixing the stage 2 build
simonpj@microsoft.com [Wed, 11 Oct 2006 14:25:02 +0000 (14:25 +0000)]
Use relative URLs when referring to libraries; push to 6.6 branch
simonpj@microsoft.com [Tue, 10 Oct 2006 15:58:34 +0000 (15:58 +0000)]
Improve documentation of concurrent and parallel Haskell; push to branch
simonpj@microsoft.com [Tue, 10 Oct 2006 15:58:14 +0000 (15:58 +0000)]
Correct id to linkend
Ian Lynagh [Wed, 11 Oct 2006 14:00:07 +0000 (14:00 +0000)]
Fix trac #921: generate *q instructions for int-float conversions
We need to generate, e.g., cvtsi2sdq rather than cvtsi2sd on amd64 in
order to have int-float conversions work correctly for values not
correctly representable in 32 bits.
Simon Marlow [Wed, 11 Oct 2006 14:35:23 +0000 (14:35 +0000)]
Module header tidyup #2
Push this further along, and fix build problems in the first patch.
Simon Marlow [Wed, 11 Oct 2006 13:16:14 +0000 (13:16 +0000)]
remove BitSet, it isn't used
Simon Marlow [Wed, 11 Oct 2006 12:05:17 +0000 (12:05 +0000)]
Module header tidyup, phase 1
This patch is a start on removing import lists and generally tidying
up the top of each module. In addition to removing import lists:
- Change DATA.IOREF -> Data.IORef etc.
- Change List -> Data.List etc.
- Remove $Id$
- Update copyrights
- Re-order imports to put non-GHC imports last
- Remove some unused and duplicate imports
Simon Marlow [Wed, 11 Oct 2006 12:05:18 +0000 (12:05 +0000)]
Interface file optimisation and removal of nameParent
This large commit combines several interrelated changes:
- IfaceSyn now contains actual Names rather than the special
IfaceExtName type. The binary interface file contains
a symbol table of Names, where each entry is a (package,
ModuleName, OccName) triple. Names in the IfaceSyn point
to entries in the symbol table.
This reduces the size of interface files, which should
hopefully improve performance (not measured yet).
The toIfaceXXX functions now do not need to pass around
a function from Name -> IfaceExtName, which makes that
code simpler.
- Names now do not point directly to their parents, and the
nameParent operation has gone away. It turned out to be hard to
keep this information consistent in practice, and the parent info
was only valid in some Names. Instead we made the following
changes:
* ImportAvails contains a new field
imp_parent :: NameEnv AvailInfo
which gives the family info for any Name in scope, and
is used by the renamer when renaming export lists, amongst
other things. This info is thrown away after renaming.
* The mi_ver_fn field of ModIface now maps to
(OccName,Version) instead of just Version, where the
OccName is the parent name. This mapping is used when
constructing the usage info for dependent modules.
There may be entries in mi_ver_fn for things that are not in
scope, whereas imp_parent only deals with in-scope things.
* The md_exports field of ModDetails now contains
[AvailInfo] rather than NameSet. This gives us
family info for the exported names of a module.
Also:
- ifaceDeclSubBinders moved to IfaceSyn (seems like the
right place for it).
- heavily refactored renaming of import/export lists.
- Unfortunately external core is now broken, as it relied on
IfaceSyn. It requires some attention.
Simon Marlow [Tue, 10 Oct 2006 15:31:37 +0000 (15:31 +0000)]
add extendNameEnvList_C
Simon Marlow [Tue, 10 Oct 2006 15:30:23 +0000 (15:30 +0000)]
getMainDeclBinder should return Nothing for a binding with no variables
See test rn003
Simon Marlow [Tue, 10 Oct 2006 13:44:49 +0000 (13:44 +0000)]
Use ":Co", not "Co" to prefix coercion TyCon names
Avoid possibility of name clash
Ian Lynagh [Tue, 10 Oct 2006 23:51:57 +0000 (23:51 +0000)]
Fix another hi-boot file
Manuel M T Chakravarty [Tue, 10 Oct 2006 20:58:43 +0000 (20:58 +0000)]
Removed unused unwrapFamInstBody from MkId
simonpj@microsoft.com [Tue, 10 Oct 2006 16:41:16 +0000 (16:41 +0000)]
Rejig the auto-scc wrapping stuff
simonpj@microsoft.com [Tue, 10 Oct 2006 14:32:25 +0000 (14:32 +0000)]
Do not filter the type envt after each GHCi stmt
Fixes Trac #925
A new comment in TcRnDriver in tcRnStmt reads thus:
At one stage I removed any shadowed bindings from the type_env;
they are inaccessible but might, I suppose, cause a space leak if we leave them there.
However, with Template Haskell they aren't necessarily inaccessible. Consider this
GHCi session
Prelude> let f n = n * 2 :: Int
Prelude> fName <- runQ [| f |]
Prelude> $(return $ AppE fName (LitE (IntegerL 7)))
14
Prelude> let f n = n * 3 :: Int
Prelude> $(return $ AppE fName (LitE (IntegerL 7)))
In the last line we use 'fName', which resolves to the *first* 'f'
in scope. If we delete it from the type env, GHCi crashes because
it doesn't expect that.
simonpj@microsoft.com [Tue, 10 Oct 2006 14:31:45 +0000 (14:31 +0000)]
Fail more informatively when a global isn't in the type environment
Manuel M T Chakravarty [Tue, 10 Oct 2006 04:46:56 +0000 (04:46 +0000)]
Rough matches for family instances
- Class and type family instances just got a lot more similar.
- FamInst, like Instance, now has a rough match signature. The idea is the
same: if the rough match doesn't match, there is no need to pull in the while
tycon describing the instance (from a lazily read iface).
- IfaceFamInst changes in a similar way and the list of all IFaceFamInsts is
now written into the binary iface (as for class instances), as deriving it
from the tycon (as before) would render the whole rough matching useless.
- As a result of this, the plumbing of class instances and type instances
through the various environments, ModIface, ModGuts, and ModDetails is now
almost the same. (The remaining difference are mostly because the dfun of a
class instance is an Id, but type instance refer to a TyCon, not an Id.)
*** WARNING: The interface file format changed! ***
*** Rebuild from scratch. ***
Ian Lynagh [Mon, 9 Oct 2006 23:05:39 +0000 (23:05 +0000)]
Tweaks and missing case in disassembler
Ian Lynagh [Mon, 9 Oct 2006 19:32:18 +0000 (19:32 +0000)]
Update hi-boot files to fix building with old GHCs
tharris@microsoft.com [Sat, 7 Oct 2006 12:29:07 +0000 (12:29 +0000)]
STM invariants
Ian Lynagh [Wed, 4 Oct 2006 12:58:57 +0000 (12:58 +0000)]
Fix unregisterised alpha builds
simonpj@microsoft.com [Fri, 6 Oct 2006 16:14:03 +0000 (16:14 +0000)]
Comments and an import-trim
simonpj@microsoft.com [Fri, 6 Oct 2006 15:12:34 +0000 (15:12 +0000)]
Mention that the module sub-directory structure for .o and .hi files is created automatically by GHC
simonpj@microsoft.com [Fri, 6 Oct 2006 14:02:50 +0000 (14:02 +0000)]
Bale out before renamer errors are duplicated
With the new Haddock patch, renamer errors can be duplicated;
so we want to bale out before doing the Haddock stuff if errors
are found.
(E.g test mod67 shows this up.)
simonpj@microsoft.com [Fri, 6 Oct 2006 14:01:02 +0000 (14:01 +0000)]
Avoid repeatedly loading GHC.Prim
This patch changes HscTypes.lookupIfaceByModule. The problem was that
when compiling the 'base' package, we'd repeatedly reload GHC.Prim.
This is easily fixed by looking in the PIT too. A comment with
lookupIfaceByModule explains
simonpj@microsoft.com [Fri, 6 Oct 2006 14:00:34 +0000 (14:00 +0000)]
Print the 'skipping' messages at verbosity level 1
simonpj@microsoft.com [Fri, 6 Oct 2006 13:19:32 +0000 (13:19 +0000)]
Fix up the typechecking of interface files during --make
This patch fixes Trac #909. The problem was that when compiling
the base package, the handling of wired-in things wasn't right;
in TcIface.tcWiredInTyCon it repeatedly loaded GHC.Base.hi into the
PIT, even though that was the very module it was compiling.
The main fix is by introducing TcIface.ifCheckWiredInThing.
But I did some minor refactoring as well.
simonpj@microsoft.com [Fri, 6 Oct 2006 13:18:30 +0000 (13:18 +0000)]
Import trimming
Simon Marlow [Fri, 6 Oct 2006 10:00:49 +0000 (10:00 +0000)]
Figure out where the rest of the repositories are, based on defaultrepo
This is a slight improvement over the patch sent by jamey@minilop.net,
we now do it properly if the source repo was a GHC tree on the local
filesystem too.
Merge post 6.6.
simonpj@microsoft.com [Fri, 6 Oct 2006 07:52:13 +0000 (07:52 +0000)]
Yet another fix to mkAtomicArgs (for floating of casts)
Comment Note [Take care] explains.
mkAtomicArgs is a mess. A substantial rewrite of Simplify is needed.
simonpj@microsoft.com [Fri, 6 Oct 2006 07:50:58 +0000 (07:50 +0000)]
Improve comments and error tracing
simonpj@microsoft.com [Fri, 6 Oct 2006 07:20:02 +0000 (07:20 +0000)]
Improve error message
simonpj@microsoft.com [Fri, 6 Oct 2006 07:19:25 +0000 (07:19 +0000)]
Undo an accidentally-committed patch by Audrey
davve@dtek.chalmers.se [Thu, 5 Oct 2006 22:02:58 +0000 (22:02 +0000)]
Merge Haddock comment support from ghc.haddock -- big patch
brianlsmith@gmail.com [Fri, 29 Sep 2006 18:59:31 +0000 (18:59 +0000)]
Remove casts from lvalues to allow compilation under GCC 4.0
simonpj@microsoft.com [Thu, 5 Oct 2006 16:18:19 +0000 (16:18 +0000)]
Correct the float-coercions-out-of-let patch
Ian Lynagh [Thu, 5 Oct 2006 15:06:30 +0000 (15:06 +0000)]
Merge changes
Ian Lynagh [Tue, 3 Oct 2006 22:03:54 +0000 (22:03 +0000)]
Improve the correlation betweens documented and existent options
Ian Lynagh [Tue, 3 Oct 2006 15:41:47 +0000 (15:41 +0000)]
Document -dfaststring-stats
Ian Lynagh [Tue, 3 Oct 2006 15:34:22 +0000 (15:34 +0000)]
Rearrange docs to have all the -ddump-* options together
Ian Lynagh [Tue, 3 Oct 2006 14:58:54 +0000 (14:58 +0000)]
Remove unused option -femit-extern-decls
Ian Lynagh [Tue, 3 Oct 2006 14:26:58 +0000 (14:26 +0000)]
Documentation updates
Ian Lynagh [Tue, 3 Oct 2006 12:19:26 +0000 (12:19 +0000)]
Fix typo
Ian Lynagh [Thu, 5 Oct 2006 14:56:29 +0000 (14:56 +0000)]
More bootstrapping updates
simonpj@microsoft.com [Thu, 5 Oct 2006 14:36:24 +0000 (14:36 +0000)]
Teach SpecConstr about Cast
This patch teaches SpecConstr about casts; see Note [SpecConstr for casts]
simonpj@microsoft.com [Thu, 5 Oct 2006 13:24:37 +0000 (13:24 +0000)]
Float coercions out of lets
Note [Float coercions]
~~~~~~~~~~~~~~~~~~~~~~
When we find the binding
x = e `cast` co
we'd like to transform it to
x' = e
x = x `cast` co -- A trivial binding
There's a chance that e will be a constructor application or function, or something
like that, so moving the coerion to the usage site may well cancel the coersions
and lead to further optimisation. Example:
data family T a :: *
data instance T Int = T Int
foo :: Int -> Int -> Int
foo m n = ...
where
x = T m
go 0 = 0
go n = case x of { T m -> go (n-m) }
-- This case should optimise
simonpj@microsoft.com [Thu, 5 Oct 2006 13:07:52 +0000 (13:07 +0000)]
Remove unused argument to mkAtomicArgs
simonpj@microsoft.com [Thu, 5 Oct 2006 13:07:23 +0000 (13:07 +0000)]
Comments and layout
simonpj@microsoft.com [Thu, 5 Oct 2006 13:03:27 +0000 (13:03 +0000)]
Remove unused OccInfo (simplification)
The substitution used to carry "fragile" OccInfo to call sites via the
DoneId constructor of SimplEnv.SimplSR. This was always a tricky thing
to do, and for some time I've been removing the need for it.
Now at last I think we can nuke it altogether. Hooray.
I did a full nonfib run, and got zero perf changes.
simonpj@microsoft.com [Thu, 5 Oct 2006 12:10:23 +0000 (12:10 +0000)]
Take 2 on the recursive-rule fix
This is another attempt to fix the interaction between recursion and
RULES. I just had it wrong before! Now the significance of the
flag on IAmALoopBreaker is given in BasicTypes
| IAmALoopBreaker -- Used by the occurrence analyser to mark loop-breakers
-- in a group of recursive definitions
!RulesOnly -- True <=> This loop breaker mentions the other binders
-- in its recursive group only in its RULES, not
-- in its rhs
-- See OccurAnal Note [RulesOnly]
simonpj@microsoft.com [Thu, 5 Oct 2006 10:57:21 +0000 (10:57 +0000)]
Take advantage of non-rec-ness in occurrence analysis (minor)
simonpj@microsoft.com [Thu, 5 Oct 2006 10:56:40 +0000 (10:56 +0000)]
Spelling in comment
simonpj@microsoft.com [Thu, 5 Oct 2006 10:56:15 +0000 (10:56 +0000)]
Add intersectsUFM
bjorn@bringert.net [Thu, 21 Sep 2006 05:20:53 +0000 (05:20 +0000)]
Made 'for' a special ID in the grammar.
bjorn@bringert.net [Wed, 20 Sep 2006 22:39:17 +0000 (22:39 +0000)]
Merged stand-alone deriving with FC stuff.
bjorn@bringert.net [Tue, 19 Sep 2006 01:06:06 +0000 (01:06 +0000)]
First documentation on stand-alone instance deriving.
bjorn@bringert.net [Tue, 19 Sep 2006 01:05:35 +0000 (01:05 +0000)]
Fixed source location and instance origin in stand-alone deriving error messages.
bjorn@bringert.net [Mon, 18 Sep 2006 23:09:25 +0000 (23:09 +0000)]
Added type signature for tcSplitSigmaTy.
bjorn@bringert.net [Mon, 18 Sep 2006 23:08:54 +0000 (23:08 +0000)]
New syntax for stand-alone deriving. Implemented fully.
bjorn@bringert.net [Sun, 17 Sep 2006 21:54:20 +0000 (21:54 +0000)]
Renamer part of stand-alone deriving extension.
bjorn@bringert.net [Sun, 17 Sep 2006 00:09:56 +0000 (00:09 +0000)]
Added parser and abstract syntax support for stand-alone deriving declarations.
simonpj@microsoft.com [Wed, 4 Oct 2006 21:10:15 +0000 (21:10 +0000)]
Comments only
simonpj@microsoft.com [Wed, 4 Oct 2006 21:08:45 +0000 (21:08 +0000)]
Fix comment in RdrName
simonpj@microsoft.com [Wed, 4 Oct 2006 15:27:05 +0000 (15:27 +0000)]
Improve unboxing of strict fields
Note [Recursive unboxing]
~~~~~~~~~~~~~~~~~~~~~~~~~
Be careful not to try to unbox this!
data T = MkT !T Int
But it's the *argument* type that matters. This is fine:
data S = MkS S !Int
because Int is non-recursive.
Before this patch, we were only doing the unboxing if the *parent*
data type was non-recursive (eg that meant S was not unboxed), but
that is over-conservative.
This showed up with indexed data types (thanks to Roman for finding it)
because indexed data types are conservatively regarded as always recursive.
simonpj@microsoft.com [Wed, 4 Oct 2006 15:26:14 +0000 (15:26 +0000)]
Remove redundant dump
simonpj@microsoft.com [Wed, 4 Oct 2006 15:25:21 +0000 (15:25 +0000)]
Trim imports
simonpj@microsoft.com [Wed, 4 Oct 2006 13:51:55 +0000 (13:51 +0000)]
Improve liberate-case to take account of coercions
Note [Scrutinee with cast]
~~~~~~~~~~~~~~~~~~~~~~~~~~
Consider this:
f = \ t -> case (v `cast` co) of
V a b -> a : f t
Exactly the same optimistaion (unrolling one call to f) will work here,
despite the cast. See mk_alt_env in the Case branch of libCase.
This patch does the job. For a change, it was really easy.
simonpj@microsoft.com [Wed, 4 Oct 2006 12:48:26 +0000 (12:48 +0000)]
Remvove totally unused static flags
simonpj@microsoft.com [Wed, 4 Oct 2006 12:32:42 +0000 (12:32 +0000)]
Remove ILX from the GHC altogether (although I left the source file IlxGen in case anyone wants to see it)
simonpj@microsoft.com [Wed, 4 Oct 2006 12:32:22 +0000 (12:32 +0000)]
-frule-check is not a static flag
simonpj@microsoft.com [Wed, 4 Oct 2006 12:12:39 +0000 (12:12 +0000)]
Tidy tyvar OccNames in TcTyClDecl
We want the universal and existential tyvars of a data constructor to
have distinct OccNames. It's confusing if they don't (in error messages,
for example), and with the current way of generating IfaceSyn, it actally
generates bogus interface files. (Which bit Roman.)
When IfaceSyn is full of Names, this won't matter so much, but it still
seems cleaner.
This patch adds a 'tidy' step to the generation of DataCon type
variables in TcTyClDecls.tcResultType