ghc-hetmet.git
15 years agoCross-module consistency check for family instances
Manuel M T Chakravarty [Wed, 18 Oct 2006 22:13:00 +0000 (22:13 +0000)]
Cross-module consistency check for family instances

15 years agoFixed spelling error in compiler/ghci/InteractiveUI.hs and docs/users_guide/ghci.xml
basvandijk@home.nl [Wed, 11 Oct 2006 20:43:01 +0000 (20:43 +0000)]
Fixed spelling error in compiler/ghci/InteractiveUI.hs and docs/users_guide/ghci.xml

15 years agoFix a bug in Lint (which wrongly complained when compiling Data.Sequence with -02)
simonpj@microsoft.com [Wed, 18 Oct 2006 12:05:00 +0000 (12:05 +0000)]
Fix a bug in Lint (which wrongly complained when compiling Data.Sequence with -02)

15 years agoAdd the primitive type Any, and use it for Dynamics
simonpj@microsoft.com [Wed, 18 Oct 2006 11:56:58 +0000 (11:56 +0000)]
Add the primitive type Any, and use it for Dynamics

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

15 years agoAdd comment about arity
simonpj@microsoft.com [Wed, 18 Oct 2006 11:24:18 +0000 (11:24 +0000)]
Add comment about arity

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.

15 years agoSpelling in comment
simonpj@microsoft.com [Wed, 18 Oct 2006 11:23:51 +0000 (11:23 +0000)]
Spelling in comment

15 years agoMinor refactoring
simonpj@microsoft.com [Wed, 18 Oct 2006 11:23:20 +0000 (11:23 +0000)]
Minor refactoring

15 years agoComments onl
simonpj@microsoft.com [Wed, 18 Oct 2006 11:22:35 +0000 (11:22 +0000)]
Comments onl

15 years agofix build for 6.4.x and 6.6.x
Simon Marlow [Wed, 18 Oct 2006 08:05:26 +0000 (08:05 +0000)]
fix build for 6.4.x and 6.6.x

15 years agocompensate for gmp/configure sometimes not being executable
Simon Marlow [Tue, 17 Oct 2006 13:22:15 +0000 (13:22 +0000)]
compensate for gmp/configure sometimes not being executable

15 years agoRejig TABLES_NEXT_TO_CODE: the -unreg flag was broken by earlier changes
Simon Marlow [Tue, 17 Oct 2006 09:44:35 +0000 (09:44 +0000)]
Rejig TABLES_NEXT_TO_CODE: the -unreg flag was broken by earlier changes
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.

15 years agoStage 2 fix to "Keep track of family instance modules"
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"

15 years agoremove use of FiniteMap, use Text.Printf
Simon Marlow [Mon, 16 Oct 2006 15:19:35 +0000 (15:19 +0000)]
remove use of FiniteMap, use Text.Printf

15 years agofix a regular expression in banner_re
Simon Marlow [Mon, 16 Oct 2006 15:08:02 +0000 (15:08 +0000)]
fix a regular expression in banner_re

15 years agoTry to get the right output for nofib-analyse
Samuel Bronson [Sat, 14 Oct 2006 17:58:55 +0000 (17:58 +0000)]
Try to get the right output for nofib-analyse

15 years agoGet nofib-analyse to build with 6.4 at least...
Samuel Bronson [Sat, 14 Oct 2006 16:34:42 +0000 (16:34 +0000)]
Get nofib-analyse to build with 6.4 at least...

15 years agoDon't squish "Inlined fn" into the right margin quite as much in trace output
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

15 years agoFix build on x86_64
Simon Marlow [Mon, 16 Oct 2006 11:20:45 +0000 (11:20 +0000)]
Fix build on x86_64

15 years agoFix deadlock on second call to newSession
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

15 years agoBuild the GHC package in stage 3 too
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.

15 years agomore fixups to make a stage 3 build do the right thing with 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

15 years agouse the correct $(HC)
Simon Marlow [Fri, 13 Oct 2006 13:44:43 +0000 (13:44 +0000)]
use the correct $(HC)

15 years agoremove unused origPkgIdMap field from PackageState
Simon Marlow [Fri, 6 Oct 2006 10:51:48 +0000 (10:51 +0000)]
remove unused origPkgIdMap field from PackageState

15 years agoCache the package database the first time it is read
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.

15 years agofix non-DEBUG build (probably my fault, sorry)
Simon Marlow [Mon, 16 Oct 2006 10:58:52 +0000 (10:58 +0000)]
fix non-DEBUG build (probably my fault, sorry)

15 years agoAdd assertion checks for mkCoVar/mkTyVar
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.

15 years agoUncomment code to emit a space in place of a '>' in literate scripts
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.

15 years agoChange type of TcGadt.refineType, plus consequences
simonpj@microsoft.com [Fri, 13 Oct 2006 11:58:01 +0000 (11:58 +0000)]
Change type of TcGadt.refineType, plus consequences

15 years agoMore refactoring in RnNames
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

15 years agoKeep track of family instance modules
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!  ***

15 years agoOverlap check for family instances def'd in current module
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.

15 years agoComments only
simonpj@microsoft.com [Thu, 12 Oct 2006 16:02:54 +0000 (16:02 +0000)]
Comments only

15 years agoMake Inst into a record type to ease subsequent changes
simonpj@microsoft.com [Wed, 11 Oct 2006 11:23:05 +0000 (11:23 +0000)]
Make Inst into a record type to ease subsequent changes

15 years agoImprove pretty-printing slightly
simonpj@microsoft.com [Wed, 11 Oct 2006 11:22:42 +0000 (11:22 +0000)]
Improve pretty-printing slightly

15 years agoAdd comments about primop rules
simonpj@microsoft.com [Wed, 11 Oct 2006 11:22:24 +0000 (11:22 +0000)]
Add comments about primop rules

15 years agofix definition of fib in example code
Simon Marlow [Thu, 12 Oct 2006 11:07:11 +0000 (11:07 +0000)]
fix definition of fib in example code

15 years agoTrack changes in source packaging scheme
sven.panne@aedion.de [Thu, 12 Oct 2006 12:12:13 +0000 (12:12 +0000)]
Track changes in source packaging scheme

15 years agofix definition of fib in example code
Simon Marlow [Thu, 12 Oct 2006 11:07:11 +0000 (11:07 +0000)]
fix definition of fib in example code

15 years agoPartially fix GHCi when unregisterised
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.

15 years agoMore import tidying and fixing the stage 2 build
Simon Marlow [Wed, 11 Oct 2006 20:01:10 +0000 (20:01 +0000)]
More import tidying and fixing the stage 2 build

15 years agoUse relative URLs when referring to libraries; push to 6.6 branch
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

15 years agoImprove documentation of concurrent and parallel Haskell; push to 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

15 years agoCorrect id to linkend
simonpj@microsoft.com [Tue, 10 Oct 2006 15:58:14 +0000 (15:58 +0000)]
Correct id to linkend

15 years agoFix trac #921: generate *q instructions for int-float conversions
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.

15 years agoModule header tidyup #2
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.

15 years agoremove BitSet, it isn't used
Simon Marlow [Wed, 11 Oct 2006 13:16:14 +0000 (13:16 +0000)]
remove BitSet, it isn't used

15 years agoModule header tidyup, phase 1
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

15 years agoInterface file optimisation and removal of nameParent
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.

15 years agoadd extendNameEnvList_C
Simon Marlow [Tue, 10 Oct 2006 15:31:37 +0000 (15:31 +0000)]
add extendNameEnvList_C

15 years agogetMainDeclBinder should return Nothing for a binding with no variables
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

15 years agoUse ":Co", not "Co" to prefix coercion TyCon names
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

15 years agoFix another hi-boot file
Ian Lynagh [Tue, 10 Oct 2006 23:51:57 +0000 (23:51 +0000)]
Fix another hi-boot file

15 years agoRemoved unused unwrapFamInstBody from MkId
Manuel M T Chakravarty [Tue, 10 Oct 2006 20:58:43 +0000 (20:58 +0000)]
Removed unused unwrapFamInstBody from MkId

15 years agoRejig the auto-scc wrapping stuff
simonpj@microsoft.com [Tue, 10 Oct 2006 16:41:16 +0000 (16:41 +0000)]
Rejig the auto-scc wrapping stuff

15 years agoDo not filter the type envt after each GHCi stmt
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.

15 years agoFail more informatively when a global isn't in the type environment
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

15 years agoRough matches for family instances
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. ***

15 years agoTweaks and missing case in disassembler
Ian Lynagh [Mon, 9 Oct 2006 23:05:39 +0000 (23:05 +0000)]
Tweaks and missing case in disassembler

15 years agoUpdate hi-boot files to fix building with old GHCs
Ian Lynagh [Mon, 9 Oct 2006 19:32:18 +0000 (19:32 +0000)]
Update hi-boot files to fix building with old GHCs

15 years agoSTM invariants
tharris@microsoft.com [Sat, 7 Oct 2006 12:29:07 +0000 (12:29 +0000)]
STM invariants

15 years agoFix unregisterised alpha builds
Ian Lynagh [Wed, 4 Oct 2006 12:58:57 +0000 (12:58 +0000)]
Fix unregisterised alpha builds

15 years agoComments and an import-trim
simonpj@microsoft.com [Fri, 6 Oct 2006 16:14:03 +0000 (16:14 +0000)]
Comments and an import-trim

15 years agoMention that the module sub-directory structure for .o and .hi files is created autom...
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

15 years agoBale out before renamer errors are duplicated
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.)

15 years agoAvoid repeatedly loading GHC.Prim
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

15 years agoPrint the 'skipping' messages at verbosity level 1
simonpj@microsoft.com [Fri, 6 Oct 2006 14:00:34 +0000 (14:00 +0000)]
Print the 'skipping' messages at verbosity level 1

15 years agoFix up the typechecking of interface files during --make
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.

15 years agoImport trimming
simonpj@microsoft.com [Fri, 6 Oct 2006 13:18:30 +0000 (13:18 +0000)]
Import trimming

15 years agoFigure out where the rest of the repositories are, based on defaultrepo
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.

15 years agoYet another fix to mkAtomicArgs (for floating of casts)
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.

15 years agoImprove comments and error tracing
simonpj@microsoft.com [Fri, 6 Oct 2006 07:50:58 +0000 (07:50 +0000)]
Improve comments and error tracing

15 years agoImprove error message
simonpj@microsoft.com [Fri, 6 Oct 2006 07:20:02 +0000 (07:20 +0000)]
Improve error message

15 years agoUndo an accidentally-committed patch by Audrey
simonpj@microsoft.com [Fri, 6 Oct 2006 07:19:25 +0000 (07:19 +0000)]
Undo an accidentally-committed  patch by Audrey

15 years agoMerge Haddock comment support from ghc.haddock -- big patch
davve@dtek.chalmers.se [Thu, 5 Oct 2006 22:02:58 +0000 (22:02 +0000)]
Merge Haddock comment support from ghc.haddock -- big patch

15 years agoRemove casts from lvalues to allow compilation under GCC 4.0
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

15 years agoCorrect the float-coercions-out-of-let patch
simonpj@microsoft.com [Thu, 5 Oct 2006 16:18:19 +0000 (16:18 +0000)]
Correct the float-coercions-out-of-let patch

15 years agoMerge changes
Ian Lynagh [Thu, 5 Oct 2006 15:06:30 +0000 (15:06 +0000)]
Merge changes

15 years agoImprove the correlation betweens documented and existent options
Ian Lynagh [Tue, 3 Oct 2006 22:03:54 +0000 (22:03 +0000)]
Improve the correlation betweens documented and existent options

15 years agoDocument -dfaststring-stats
Ian Lynagh [Tue, 3 Oct 2006 15:41:47 +0000 (15:41 +0000)]
Document -dfaststring-stats

15 years agoRearrange docs to have all the -ddump-* options together
Ian Lynagh [Tue, 3 Oct 2006 15:34:22 +0000 (15:34 +0000)]
Rearrange docs to have all the -ddump-* options together

15 years agoRemove unused option -femit-extern-decls
Ian Lynagh [Tue, 3 Oct 2006 14:58:54 +0000 (14:58 +0000)]
Remove unused option -femit-extern-decls

15 years agoDocumentation updates
Ian Lynagh [Tue, 3 Oct 2006 14:26:58 +0000 (14:26 +0000)]
Documentation updates

15 years agoFix typo
Ian Lynagh [Tue, 3 Oct 2006 12:19:26 +0000 (12:19 +0000)]
Fix typo

15 years agoMore bootstrapping updates
Ian Lynagh [Thu, 5 Oct 2006 14:56:29 +0000 (14:56 +0000)]
More bootstrapping updates

15 years agoTeach SpecConstr about Cast 2006-10-05
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]

15 years agoFloat coercions out of lets
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

15 years agoRemove unused argument to mkAtomicArgs
simonpj@microsoft.com [Thu, 5 Oct 2006 13:07:52 +0000 (13:07 +0000)]
Remove unused argument to mkAtomicArgs

15 years agoComments and layout
simonpj@microsoft.com [Thu, 5 Oct 2006 13:07:23 +0000 (13:07 +0000)]
Comments and layout

15 years agoRemove unused OccInfo (simplification)
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.

15 years agoTake 2 on the recursive-rule fix
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]

15 years agoTake advantage of non-rec-ness in occurrence analysis (minor)
simonpj@microsoft.com [Thu, 5 Oct 2006 10:57:21 +0000 (10:57 +0000)]
Take advantage of non-rec-ness in occurrence analysis (minor)

15 years agoSpelling in comment
simonpj@microsoft.com [Thu, 5 Oct 2006 10:56:40 +0000 (10:56 +0000)]
Spelling in comment

15 years agoAdd intersectsUFM
simonpj@microsoft.com [Thu, 5 Oct 2006 10:56:15 +0000 (10:56 +0000)]
Add intersectsUFM

15 years agoMade 'for' a special ID in the grammar.
bjorn@bringert.net [Thu, 21 Sep 2006 05:20:53 +0000 (05:20 +0000)]
Made 'for' a special ID in the grammar.

15 years agoMerged stand-alone deriving with FC stuff.
bjorn@bringert.net [Wed, 20 Sep 2006 22:39:17 +0000 (22:39 +0000)]
Merged stand-alone deriving with FC stuff.

15 years agoFirst documentation on stand-alone instance deriving.
bjorn@bringert.net [Tue, 19 Sep 2006 01:06:06 +0000 (01:06 +0000)]
First documentation on stand-alone instance deriving.

15 years agoFixed source location and instance origin in stand-alone deriving error messages.
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.

15 years agoAdded type signature for tcSplitSigmaTy.
bjorn@bringert.net [Mon, 18 Sep 2006 23:09:25 +0000 (23:09 +0000)]
Added type signature for tcSplitSigmaTy.

15 years agoNew syntax for stand-alone deriving. Implemented fully.
bjorn@bringert.net [Mon, 18 Sep 2006 23:08:54 +0000 (23:08 +0000)]
New syntax for stand-alone deriving. Implemented fully.

15 years agoRenamer part of stand-alone deriving extension.
bjorn@bringert.net [Sun, 17 Sep 2006 21:54:20 +0000 (21:54 +0000)]
Renamer part of stand-alone deriving extension.