1. 20 Jun, 2007 11 commits
    • simonpj@microsoft.com's avatar
    • simonpj@microsoft.com's avatar
      Implement -X=GADTs and -X=RelaxedPolyRec · 970d5b88
      simonpj@microsoft.com authored
      Two new -X flags, one for GADTs and one for relaxed polymorphic recursion
      
      This also fixes a rather confusing error message that the Darcs folk 
      tripped over.
      970d5b88
    • simonpj@microsoft.com's avatar
      Use -X for language extensions · 5e05865d
      simonpj@microsoft.com authored
      We've often talked about having a separate flag for language extensions,
      and now we have one. You can say
      
      	-XImplicitParams
      	-X=ImplicitParams
      	-Ximplicit-params
      
      as you like.  These replace the "-f" flags with similar names (though
      the -f prefix will serve as a synonym for -X for a while).  
      
      There's an optional "=", and the flag is normalised by removing hyphens
      and lower-casing, so all the above variants mean the same thing.
      
      The nomenclature is intended to match the LANGUAGE pramgas, which are
      defined by Cabal.  So you can also say
      
      	{-# LANGUAGE ImplicitParams #-}
      
      But Cabal doesn't have as many language options as GHC does, so the -X
      things are a superset of the LANGUAGE things.
      
      The optional "=" applies to all flags that take an argument, so you can,
      for example, say
      	
      	-pgmL=/etc/foo
      
      I hope that's ok.  (It's an unforced change; just fitted in.)
      
      I hope we'll add more -X flags, to replace the portmanteau -fglasgow-exts 
      which does everything!  
      
      I have updated the manual, but doubtless missed something.
      
      
      5e05865d
    • simonpj@microsoft.com's avatar
      Unused import · 2a2c4275
      simonpj@microsoft.com authored
      2a2c4275
    • andy@galois.com's avatar
      d85714eb
    • Simon Marlow's avatar
      remove debugging code accidentally left in · 629e852d
      Simon Marlow authored
      629e852d
    • Ian Lynagh's avatar
      Use .NOTPARALLEL for the libraries Makefile · 8966ae35
      Ian Lynagh authored
      8966ae35
    • simonpj@microsoft.com's avatar
      Improve the handling of deriving, in error cases · f6a741fa
      simonpj@microsoft.com authored
      I'd been too ambitious with error handling for 'deriving', and got it
      entirely wrong.  This fixes it.  See extensive 
      	Note [Exotic derived instance contexts]
      in TcSimplify.  (Most of the extra lines are comments!)
      f6a741fa
    • simonpj@microsoft.com's avatar
      More refactoring in TcSimplify · 5c2ecdff
      simonpj@microsoft.com authored
      This re-jig tides up the top-level simplification, and combines in one
      well-commented function, approximateImplications, the rather ad-hoc
      way of simplifying implication constraints during type inference.
      
      Error messages get a bit better too.
      5c2ecdff
    • simonpj@microsoft.com's avatar
      Fix egregious sharing bug in LiberateCase · da5b25fe
      simonpj@microsoft.com authored
      Andy Gill writes: consider the following code
      
             f = g (case v of
                      V a b -> a : t f)
      
      where g is expensive. Liberate case will turn this into
      
             f = g (case v of
                     V a b -> a : t (letrec f = g (case v of
                                                   V a b -> a : f t)
                                      in f)
                   )
      Yikes! We evaluate g twice. This leads to a O(2^n) explosion
      if g calls back to the same code recursively.
      
      This may be the same as Trac #1366.  
      
      da5b25fe
    • andy@galois.com's avatar
      Turning off case liberation when using the hpc option, for now · d363c1fc
      andy@galois.com authored
      Consider the following code
      
           f = g (case v of
                    V a b -> a : t f)
      
      where g is expensive. Liberate case will turn this into
      
           f = g (case v of
                   V a b -> a : t (letrec f = g (case v of
                                                 V a b -> a : f t)
                                    in f)
                 )
      
      Yikes! We evaluate g twice. This leads to a O(2^n) explosion
      if g calls back to the same code recursively.
      
      This happen sometimes in HPC, because every tick is a liberate-able case,
      but is a general problem to case liberation (I think). 
      d363c1fc
  2. 19 Jun, 2007 8 commits
  3. 18 Jun, 2007 2 commits
  4. 17 Jun, 2007 1 commit
  5. 13 Jun, 2007 1 commit
  6. 17 Jun, 2007 1 commit
  7. 16 Jun, 2007 1 commit
  8. 15 Jun, 2007 2 commits
  9. 14 Jun, 2007 1 commit
  10. 13 Jun, 2007 7 commits
  11. 12 Jun, 2007 1 commit
    • Ian Lynagh's avatar
      Tweak banner printing · cedd4187
      Ian Lynagh authored
      * -{short,long}-ghci-banner are now dynamic options, so you can put
        ":set -short-ghci-banner" in .ghci
      * The -v2 banner information now always tells you what compiler booted GHC,
        and what stage the compiler is. Thus we no longer assume that stage > 1
        iff GHCI is defined.
      cedd4187
  12. 01 Jun, 2007 1 commit
  13. 09 Jun, 2007 3 commits