Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Tag: 2008-09-12
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

    simonpj@microsoft.com 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

    simonpj@microsoft.com authored
  3. Check the *right* set of type variables for escape!

    simonpj@microsoft.com 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)

    simonpj@microsoft.com 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

    simonpj@microsoft.com 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

    simonpj@microsoft.com authored
  7. Fix the zonking of HsWrappers

    simonpj@microsoft.com 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

    simonpj@microsoft.com authored
  9. Layout and type synonyms only

    simonpj@microsoft.com authored
  10. Robustify the setting of implied flags

    simonpj@microsoft.com 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
    anyway.
  11. Rename a variable

    simonpj@microsoft.com authored
  12. Comments only

    simonpj@microsoft.com authored
  13. Simplify the type signature for tcPolyBinds

    simonpj@microsoft.com authored
Commits on Sep 9, 2008
  1. @igfoo
  2. @igfoo
  3. @igfoo
  4. Tell GHC which module nON_EXHAUSTIVE_GUARDS_ERROR_ID comes from

    simonpj@microsoft.com 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

    simonpj@microsoft.com 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.