1. 24 Oct, 2011 1 commit
  2. 27 Sep, 2011 1 commit
  3. 24 Sep, 2011 1 commit
  4. 21 Sep, 2011 1 commit
    • Simon Marlow's avatar
      Add support for all top-level declarations to GHCi · 3db75724
      Simon Marlow authored
        This is work mostly done by Daniel Winograd-Cort during his
        internship at MSR Cambridge, with some further refactoring by me.
      
      This commit adds support to GHCi for most top-level declarations that
      can be used in Haskell source files.  Class, data, newtype, type,
      instance are all supported, as are Type Family-related declarations.
      
      The current set of declarations are shown by :show bindings.  As with
      variable bindings, entities bound by newer declarations shadow earlier
      ones.
      
      Tests are in testsuite/tests/ghci/scripts/ghci039--ghci054.
      Documentation to follow.
      3db75724
  5. 17 Sep, 2011 1 commit
    • Ian Lynagh's avatar
      Improve the handling of Integer literals · 1e87c0a6
      Ian Lynagh authored
      LitInteger now carries around the id of mkInteger, which it uses
      to construct the core to build Integer literals. This way we don't
      have to build in info about lots of Ids.
      
      We also no longer have any special-casing for integer-simple, so
      there is less code involved.
      1e87c0a6
  6. 13 Sep, 2011 1 commit
    • Ian Lynagh's avatar
      change how Integer's are handled in Core · fdac48f3
      Ian Lynagh authored
      We now treat them as literals until CorePrep, when we finally
      convert them into the real Core representation. This makes it a lot
      simpler to implement built-in rules on them.
      fdac48f3
  7. 09 Sep, 2011 1 commit
  8. 07 Sep, 2011 1 commit
  9. 06 Sep, 2011 1 commit
    • batterseapower's avatar
      Implement -XConstraintKind · 9729fe7c
      batterseapower authored
      Basically as documented in http://hackage.haskell.org/trac/ghc/wiki/KindFact,
      this patch adds a new kind Constraint such that:
      
        Show :: * -> Constraint
        (?x::Int) :: Constraint
        (Int ~ a) :: Constraint
      
      And you can write *any* type with kind Constraint to the left of (=>):
      even if that type is a type synonym, type variable, indexed type or so on.
      
      The following (somewhat related) changes are also made:
       1. We now box equality evidence. This is required because we want
          to give (Int ~ a) the *lifted* kind Constraint
       2. For similar reasons, implicit parameters can now only be of
          a lifted kind. (?x::Int#) => ty is now ruled out
       3. Implicit parameter constraints are now allowed in superclasses
          and instance contexts (this just falls out as OK with the new
          constraint solver)
      
      Internally the following major changes were made:
       1. There is now no PredTy in the Type data type. Instead
          GHC checks the kind of a type to figure out if it is a predicate
       2. There is now no AClass TyThing: we represent classes as TyThings
          just as a ATyCon (classes had TyCons anyway)
       3. What used to be (~) is now pretty-printed as (~#). The box
          constructor EqBox :: (a ~# b) -> (a ~ b)
       4. The type LCoercion is used internally in the constraint solver
          and type checker to represent coercions with free variables
          of type (a ~ b) rather than (a ~# b)
      9729fe7c
  10. 26 Aug, 2011 1 commit
  11. 30 Jul, 2011 1 commit
  12. 23 Jul, 2011 5 commits
  13. 22 Jul, 2011 2 commits
  14. 12 Jul, 2011 2 commits
  15. 29 Jun, 2011 1 commit
  16. 18 Jun, 2011 3 commits
  17. 16 Jun, 2011 1 commit
    • Simon Peyton Jones's avatar
      Add dynamically-linked plugins (see Trac #3843) · 592def09
      Simon Peyton Jones authored
      This patch was originally developed by Max Bolingbroke, and worked on
      further by Austin Seipp.  It allows you to write a Core-to-Core pass
      and have it dynamically linked into an otherwise-unmodified GHC, and
      run at a place you specify in the Core optimisation pipeline.
      
      Main components:
        - CoreMonad: new types Plugin, PluginPass
                     plus a new constructor CoreDoPluginPass in CoreToDo
      
        - SimplCore: stuff to dynamically load any plugins, splice
          them into the core-to-core pipeline, and invoke them
      
        - Move "getCoreToDo :: DynFlags -> [CoreToDo]"
            which constructs the main core-to-core pipeline
            from CoreMonad to SimplCore
          SimplCore is the driver for the optimisation pipeline, and it
          makes more sense to have the pipeline construction in the driver
          not in the infrastructure module.
      
        - New module DynamicLoading: invoked by SimplCore to load any plugins
          Some consequential changes in Linker.
      
        - New module GhcPlugins: this should be imported by plugin modules; it
          it not used by GHC itself.
      592def09
  18. 31 May, 2011 1 commit
  19. 09 May, 2011 1 commit
  20. 03 May, 2011 1 commit
  21. 02 May, 2011 1 commit
  22. 29 Apr, 2011 1 commit
  23. 28 Apr, 2011 2 commits
  24. 19 Apr, 2011 1 commit
    • Simon Peyton Jones's avatar
      This BIG PATCH contains most of the work for the New Coercion Representation · fdf86568
      Simon Peyton Jones authored
      See the paper "Practical aspects of evidence based compilation in System FC"
      
      * Coercion becomes a data type, distinct from Type
      
      * Coercions become value-level things, rather than type-level things,
        (although the value is zero bits wide, like the State token)
        A consequence is that a coerion abstraction increases the arity by 1
        (just like a dictionary abstraction)
      
      * There is a new constructor in CoreExpr, namely Coercion, to inject
        coercions into terms
      fdf86568
  25. 14 Apr, 2011 1 commit
  26. 12 Apr, 2011 1 commit
  27. 29 Mar, 2011 1 commit
    • Ian Lynagh's avatar
      Renumber TH uniques · b5a358ee
      Ian Lynagh authored
      This fixes a couple of duplicates that had crept in, and also
      renumbers everything so that they are monotonically increasing
      through the file.
      b5a358ee
  28. 20 Feb, 2011 1 commit
    • chak@cse.unsw.edu.au.'s avatar
      Added a VECTORISE pragma · f2aaae97
      chak@cse.unsw.edu.au. authored
      - Added a pragma {-# VECTORISE var = exp #-} that prevents
        the vectoriser from vectorising the definition of 'var'.
        Instead it uses the binding '$v_var = exp' to vectorise
        'var'.  The vectoriser checks that the Core type of 'exp'
        matches the vectorised Core type of 'var'.  (It would be
        quite complicated to perform that check in the type checker
        as the vectorisation of a type needs the state of the VM
        monad.)
      - Added parts of a related VECTORISE SCALAR pragma
      - Documented -ddump-vect
      - Added -ddump-vt-trace
      - Some clean up
      f2aaae97
  29. 26 Nov, 2010 1 commit
  30. 16 Nov, 2010 1 commit
  31. 23 Oct, 2010 1 commit