Commits on Sep 12, 2008
  1. Fix retainer profiling (#2576)

    simonmar committed Sep 12, 2008
  2. ext-core library: Add dead code eliminator for Core

    catamorphism committed Sep 12, 2008
    Added code for dead code elimination to the ext-core library. This can be used in concert with Language.Core.Merge to produce a single self-contained module without unnecessary cruft.
  3. ext-core library: Change syntax for primitive coercions

    catamorphism committed Sep 12, 2008
    Changed the ext-core syntax to include primitive coercions (left, right, sym, trans, etc.) as syntax rather than referring them to their names as in GHC. (I hope I updated the docs to reflect this...)
  4. ext-core library: Export a lot more things from Prims

    catamorphism committed Sep 12, 2008
    See comments for details.
  5. ext-core library: Extend Core preprocessor

    catamorphism committed Sep 12, 2008
    See comments for details.
  6. ext-core library: Fix performance bug

    catamorphism committed Sep 12, 2008
    isUtupleTy was implemented inefficiently (and is called a lot by the typechecker). Replaced with uglier but faster code.
  7. ext-core library: Add code for merging multiple Core modules into a s…

    catamorphism committed Sep 12, 2008
    …ingle module
    I added a new module, Merge, to the ext-core library that combines a list of ext-core modules into a new, uniquely renamed module.
    See comments in Merge.hs for more details.
Commits on Sep 11, 2008
  1. Include docs in the bindists

    igfoo committed Sep 11, 2008
  2. Don't install pwd

    igfoo committed Sep 11, 2008
  3. In stgReallocForGMP, we need to copy min(old_size,new_size)

    igfoo committed Sep 11, 2008
    We used to always copy old_size
Commits on Sep 10, 2008
  1. Remove dataConInstOrigDictsAndArgTys committed Sep 10, 2008
    This suspicious function had just one call, in BuildTyCl.mkNewTyConRhs.
    I've done it another way now, which is tidier.
  2. Fix debug message formatting on Windows committed Sep 10, 2008
  3. Check the *right* set of type variables for escape! committed Sep 10, 2008
    I did the wrong checkSigTyVars, which (happily) triggered an ASSERT
    failure.  This should fix it.
  4. More refactoring of instance declarations (fixes Trac #2572) committed Sep 10, 2008
    In refactoring instance declarations I'd taken a short cut over
    scoped type variables, but it wasn't right as #2572 shows.
    Fixing it required a significant chunk of further refactoring,
    alas. But it's done!  Quite tidily as it turns out.
    The main issue is that when typechecking a default method, we
    need two sets of type variables in scope
    	class C a where
       	  op :: forall b. ...
    	  op = e
    In 'e', *both* 'a' and 'b' are in scope.  But the type of the
    default method has a nested flavour
    	op :: forall a. C a => forall b. ....
    and our normal scoping mechanisms don't bring 'b' into scope.
    (And probably shouldn't.)  
    Solution (which is done for instance methods too) is to use
    a local defintion, like this:
      $dmop :: forall a. C a => forall b. ....
      $dmop a d = let 
                     op :: forall b. ...
                     op = e
                  in op
    and now the scoping works out.  I hope I have now see the
    last of this code for a bit!
  5. Fix Trac #2581: inlining of record selectors committed Sep 10, 2008
    Bryan discovered that a non-trivial record selector (non-trivial in 
    the sense that it has to reconstruct the result value because of
    UNPACK directives) weren't being inlined.  The reason was that the
    unfolding generated by MkId.mRecordSelId was never being optimised
    *at all*, and hence looked big, and hence wasn't inlined.
    (The out-of-line version *is* put into the code of the module
    and *is* optimised, which made this bug pretty puzzling.  But the
    unfolding inside the record-selector-Id itself, which is a GlobalId
    and hence does not get its inlining updated like LocalIds, was
    big and fat.)
    Solution: I wrote a very simple optimiser, CoreUnfold.simplOptExpr,
    which does enough optimisation to solve this particular problem.
    It's short, simple, and will be useful in other contexts.
  6. Fix Trac #2573; and explanatory comment committed Sep 10, 2008
  7. Fix the zonking of HsWrappers committed Sep 10, 2008
    HsWrappers are horribly inconsistent at the moment. I intended that
      WpLam, WpApp     are for evidence abstraction/application
      WpTyLam, WpTyApp are for type abstraction/application
    But when we zonk (WpApp co), where co is a coercion variable, we 
    get a *coercion* not a coercion *variable*.   So for now I'm making
    it into a WpTyApp, which the desugarer handles perfectly well.
    (I'd forgotten to zonk it properly at all; that is the bug that 
    this patch fixes.)
  8. Add newDictOcc, newDictOccs committed Sep 10, 2008
  9. Layout and type synonyms only committed Sep 10, 2008
  10. Robustify the setting of implied flags committed Sep 10, 2008
    When setting implied flags, do so recursively.  So if -Xa implies -Xb,
    and -Xb implies -Xc, we do the right thing. 
    I thought we needed this, but we don't.  But it seems like a good idea
  11. Rename a variable committed Sep 10, 2008
  12. Comments only committed Sep 10, 2008
  13. Simplify the type signature for tcPolyBinds committed Sep 10, 2008
Commits on Sep 9, 2008
  1. Link to core.pdf, not

    igfoo committed Sep 9, 2008
  2. Tell GHC which module nON_EXHAUSTIVE_GUARDS_ERROR_ID comes from committed Sep 9, 2008
    This one was missed when the error-ids all moved to Control.Exception.Base
    (The nofib test 'fluid' showed it up.)
  3. Improve float-in somewhat committed Sep 9, 2008
    See Note [Floating in past a lambda group]. The new thing
    here is that we previously were not floating in past a group
    that had (\(a:*) \(x:State# a). e), with a type var *and* a
    one-shot lambda.  
    The fix makes wave4main allocate 2% less, and doesn't change any other
    nofib number, so it's not a big deal.