Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Sep 12, 2008
  1. @simonmar
  2. @simonmar
  3. @simonmar
  4. @catamorphism

    ext-core library: Add dead code eliminator for Core

    catamorphism authored
    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.
  5. @catamorphism
  6. @catamorphism

    ext-core library: Change syntax for primitive coercions

    catamorphism authored
    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...)
  7. @catamorphism

    ext-core library: Export a lot more things from Prims

    catamorphism authored
    See comments for details.
  8. @catamorphism

    ext-core library: Extend Core preprocessor

    catamorphism authored
    See comments for details.
  9. @catamorphism
  10. @catamorphism

    ext-core library: Fix performance bug

    catamorphism authored
    isUtupleTy was implemented inefficiently (and is called a lot by the typechecker). Replaced with uglier but faster code.
  11. @catamorphism
  12. @catamorphism

    ext-core library: Add code for merging multiple Core modules into a s…

    catamorphism authored
    …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. @igfoo
  2. @igfoo

    Include docs in the bindists

    igfoo authored
  3. @igfoo

    Don't install pwd

    igfoo authored
  4. @igfoo

    In stgReallocForGMP, we need to copy min(old_size,new_size)

    igfoo authored
    We used to always copy old_size
  5. @igfoo
Commits on Sep 10, 2008
  1. Remove dataConInstOrigDictsAndArgTys authored
    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 authored
  3. Check the *right* set of type variables for escape! authored
    I did the wrong checkSigTyVars, which (happily) triggered an ASSERT
    failure.  This should fix it.
  4. More refactoring of instance declarations (fixes Trac #2572) authored
    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 authored
    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 authored
  7. Fix the zonking of HsWrappers authored
    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 authored
  9. Layout and type synonyms only authored
  10. Robustify the setting of implied flags authored
    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 authored
  12. Comments only authored
  13. Simplify the type signature for tcPolyBinds authored
Commits on Sep 9, 2008
  1. @igfoo
  2. @igfoo
  3. @igfoo
  4. Tell GHC which module nON_EXHAUSTIVE_GUARDS_ERROR_ID comes from authored
    This one was missed when the error-ids all moved to Control.Exception.Base
    (The nofib test 'fluid' showed it up.)
  5. Improve float-in somewhat authored
    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.
Something went wrong with that request. Please try again.