Thu Oct 19 17:23:28 CEST 2006 [EMAIL PROTECTED]
* A little abstraction
New patches:
[A little abstraction
[EMAIL PROTECTED] {
hunk ./compiler/main/DriverPipeline.hs 419
- start_phase
- | Just x_phase <- mb_phase = x_phase
- | otherwise = startPhase suffix
+ start_phase = fromMaybe (startPhase suffix) mb_phase
}
Context:
[Fix stage1 build with 6.2.1 (from Andy Gill)
Ian Lynagh <[EMAIL PROTECTED]>**20061019000807]
[Fix the build with GHC 6.2.2
Ian Lynagh <[EMAIL PROTECTED]>**20061018230555]
[Cross-module consistency check for family instances
Manuel M T Chakravarty <[EMAIL PROTECTED]>**20061018221300]
[Fix a bug in Lint (which wrongly complained when compiling Data.Sequence with -02)
[EMAIL PROTECTED]
[Add the primitive type Any, and use it for Dynamics
[EMAIL PROTECTED]
GHC's code generator can only enter a closure if it's guaranteed
not to be a function. In the Dynamic module, we were using the
type (forall a.a) as the type to which the dynamic type was unsafely
cast:
type Obj = forall a.a
Gut alas this polytype was sometimes instantiated to (), something
like this (it only bit when profiling was enabled)
let y::() = dyn ()
in (y `cast` ..) p q
As a result, an ASSERT in ClosureInfo fired (hooray).
I've tided this up by making a new, primitive, lifted type Any, and
arranging that Dynamic uses Any, thus:
type Obj = ANy
While I was at it, I also arranged that when the type checker instantiates
un-constrained type variables, it now instantiates them to Any, not ()
e.g. length Any []
[There remains a Horrible Hack when we want Any-like things at arbitrary
kinds. This essentially never happens, but see comments with
TysPrim.mkAnyPrimTyCon.]
Anyway, this fixes Trac #905
]
[Add comment about arity
[EMAIL PROTECTED]
I'm not sure what the significance of the "arity" of a primtive
TyCon is. They aren't necessarily saturated, so it's not that.
I rather think that arity is only relevant for
SynTyCon
AlgTyCon
CoercionTyCon
This comment (and commit message) is just an aide memoire.
]
[Spelling in comment
[EMAIL PROTECTED]
[Minor refactoring
[EMAIL PROTECTED]
[Comments onl
[EMAIL PROTECTED]
[fix build for 6.4.x and 6.6.x
Simon Marlow <[EMAIL PROTECTED]>**20061018080526]
[compensate for gmp/configure sometimes not being executable
Simon Marlow <[EMAIL PROTECTED]>**20061017132215]
[Rejig TABLES_NEXT_TO_CODE: the -unreg flag was broken by earlier changes
Simon Marlow <[EMAIL PROTECTED]>**20061017094435
A GHC binary can generally build either registerised or unregisterised
code, unless it is unregisterised only.
The previous changes broke this, but I think I've now restored it.
]
[Stage 2 fix to "Keep track of family instance modules"
Manuel M T Chakravarty <[EMAIL PROTECTED]>**20061016194048]
[remove use of FiniteMap, use Text.Printf
Simon Marlow <[EMAIL PROTECTED]>**20061016151935]
[fix a regular expression in banner_re
Simon Marlow <[EMAIL PROTECTED]>**20061016150802]
[Try to get the right output for nofib-analyse
Samuel Bronson <[EMAIL PROTECTED]>**20061014175855]
[Get nofib-analyse to build with 6.4 at least...
Samuel Bronson <[EMAIL PROTECTED]>**20061014163442]
[Don't squish "Inlined fn" into the right margin quite as much in trace output
Samuel Bronson <[EMAIL PROTECTED]>**20061016130004]
[Fix build on x86_64
Simon Marlow <[EMAIL PROTECTED]>**20061016112045
]
[Fix deadlock on second call to newSession
Simon Marlow <[EMAIL PROTECTED]>**20061016111741
Tracked down by Krasimir Angelov
]
[Build the GHC package in stage 3 too
Simon Marlow <[EMAIL PROTECTED]>**20061016110926
This fixes the problem with the nightly builds not including the GHC
package.
]
[more fixups to make a stage 3 build do the right thing with the ghc package
Simon Marlow <[EMAIL PROTECTED]>**20061013135318]
[use the correct $(HC)
Simon Marlow <[EMAIL PROTECTED]>**20061013134443]
[remove unused origPkgIdMap field from PackageState
Simon Marlow <[EMAIL PROTECTED]>**20061006105148]
[Cache the package database the first time it is read
Simon Marlow <[EMAIL PROTECTED]>**20061006104221
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.
]
[fix non-DEBUG build (probably my fault, sorry)
Simon Marlow <[EMAIL PROTECTED]>**20061016105852]
[Add assertion checks for mkCoVar/mkTyVar
[EMAIL PROTECTED]
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.
]
[Uncomment code to emit a space in place of a '>' in literate scripts
Ian Lynagh <[EMAIL PROTECTED]>**20061013131514
This fixes trac #210. Test is read041.
]
[Change type of TcGadt.refineType, plus consequences
[EMAIL PROTECTED]
[More refactoring in RnNames
[EMAIL PROTECTED]
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
]
[Keep track of family instance modules
Manuel M T Chakravarty <[EMAIL PROTECTED]>**20061013004223
- 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! ***
]
[Overlap check for family instances def'd in current module
Manuel M T Chakravarty <[EMAIL PROTECTED]>**20061012203737
- 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.
]
[Comments only
[EMAIL PROTECTED]
[Make Inst into a record type to ease subsequent changes
[EMAIL PROTECTED]
[Improve pretty-printing slightly
[EMAIL PROTECTED]
[Add comments about primop rules
[EMAIL PROTECTED]
[fix definition of fib in example code
Simon Marlow <[EMAIL PROTECTED]>*-20061012110711]
[Track changes in source packaging scheme
[EMAIL PROTECTED]
[fix definition of fib in example code
Simon Marlow <[EMAIL PROTECTED]>**20061012110711]
[Partially fix GHCi when unregisterised
Ian Lynagh <[EMAIL PROTECTED]>**20061012013901
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.
]
[More import tidying and fixing the stage 2 build
Simon Marlow <[EMAIL PROTECTED]>**20061011200110]
[Fixed spelling error in compiler/ghci/InteractiveUI.hs and docs/users_guide/ghci.xml
[EMAIL PROTECTED]
[Use relative URLs when referring to libraries; push to 6.6 branch
[EMAIL PROTECTED]
[Improve documentation of concurrent and parallel Haskell; push to branch
[EMAIL PROTECTED]
[Correct id to linkend
[EMAIL PROTECTED]
[Fix trac #921: generate *q instructions for int-float conversions
Ian Lynagh <[EMAIL PROTECTED]>**20061011140007
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.
]
[Module header tidyup #2
Simon Marlow <[EMAIL PROTECTED]>**20061011143523
Push this further along, and fix build problems in the first patch.
]
[remove BitSet, it isn't used
Simon Marlow <[EMAIL PROTECTED]>**20061011131614]
[Module header tidyup, phase 1
Simon Marlow <[EMAIL PROTECTED]>**20061011120517
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
]
[Interface file optimisation and removal of nameParent
Simon Marlow <[EMAIL PROTECTED]>**20061011120518
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.
]
[add extendNameEnvList_C
Simon Marlow <[EMAIL PROTECTED]>**20061010153137]
[getMainDeclBinder should return Nothing for a binding with no variables
Simon Marlow <[EMAIL PROTECTED]>**20061010153023
See test rn003
]
[Use ":Co", not "Co" to prefix coercion TyCon names
Simon Marlow <[EMAIL PROTECTED]>**20061010134449
Avoid possibility of name clash
]
[Fix another hi-boot file
Ian Lynagh <[EMAIL PROTECTED]>**20061010235157]
[Removed unused unwrapFamInstBody from MkId
Manuel M T Chakravarty <[EMAIL PROTECTED]>**20061010205843]
[Rejig the auto-scc wrapping stuff
[EMAIL PROTECTED]
[Do not filter the type envt after each GHCi stmt
[EMAIL PROTECTED]
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.
]
[Fail more informatively when a global isn't in the type environment
[EMAIL PROTECTED]
[Rough matches for family instances
Manuel M T Chakravarty <[EMAIL PROTECTED]>**20061010044656
- 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. ***
]
[Tweaks and missing case in disassembler
Ian Lynagh <[EMAIL PROTECTED]>**20061009230539]
[Update hi-boot files to fix building with old GHCs
Ian Lynagh <[EMAIL PROTECTED]>**20061009193218]
[STM invariants
[EMAIL PROTECTED]
[Fix unregisterised alpha builds
Ian Lynagh <[EMAIL PROTECTED]>**20061004125857]
[Comments and an import-trim
[EMAIL PROTECTED]
[Mention that the module sub-directory structure for .o and .hi files is created automatically by GHC
[EMAIL PROTECTED]
[Bale out before renamer errors are duplicated
[EMAIL PROTECTED]
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.)
]
[Avoid repeatedly loading GHC.Prim
[EMAIL PROTECTED]
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
]
[Print the 'skipping' messages at verbosity level 1
[EMAIL PROTECTED]
[Fix up the typechecking of interface files during --make
[EMAIL PROTECTED]
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.
]
[Import trimming
[EMAIL PROTECTED]
[Figure out where the rest of the repositories are, based on defaultrepo
Simon Marlow <[EMAIL PROTECTED]>**20061006100049
This is a slight improvement over the patch sent by [EMAIL PROTECTED],
we now do it properly if the source repo was a GHC tree on the local
filesystem too.
Merge post 6.6.
]
[Yet another fix to mkAtomicArgs (for floating of casts)
[EMAIL PROTECTED]
Comment Note [Take care] explains.
mkAtomicArgs is a mess. A substantial rewrite of Simplify is needed.
]
[Improve comments and error tracing
[EMAIL PROTECTED]
[Improve error message
[EMAIL PROTECTED]
[Undo an accidentally-committed patch by Audrey
[EMAIL PROTECTED]
[Merge Haddock comment support from ghc.haddock -- big patch
[EMAIL PROTECTED]
[Remove casts from lvalues to allow compilation under GCC 4.0
[EMAIL PROTECTED]
[Correct the float-coercions-out-of-let patch
[EMAIL PROTECTED]
[Merge changes
Ian Lynagh <[EMAIL PROTECTED]>**20061005150630]
[Improve the correlation betweens documented and existent options
Ian Lynagh <[EMAIL PROTECTED]>**20061003220354]
[Document -dfaststring-stats
Ian Lynagh <[EMAIL PROTECTED]>**20061003154147]
[Rearrange docs to have all the -ddump-* options together
Ian Lynagh <[EMAIL PROTECTED]>**20061003153422]
[Remove unused option -femit-extern-decls
Ian Lynagh <[EMAIL PROTECTED]>**20061003145854]
[Documentation updates
Ian Lynagh <[EMAIL PROTECTED]>**20061003142658]
[Fix typo
Ian Lynagh <[EMAIL PROTECTED]>**20061003121926]
[More bootstrapping updates
Ian Lynagh <[EMAIL PROTECTED]>**20061005145629]
[TAG 2006-10-05
Lemmih <[EMAIL PROTECTED]>**20061005150234]
Patch bundle hash:
be53857b66fa6879ea80680267df81e83794ab3b
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc