1. 05 Feb, 2008 8 commits
    • simonpj@microsoft.com's avatar
      Inject implicit bindings before the simplifier (Trac #2070) · 5952ef0d
      simonpj@microsoft.com authored
      With constructor unpacking, it's possible for constructors and record
      selectors to have non-trivial code, which should be optimised before
      being fed to the code generator.  Example:
      
        data Foo = Foo { get :: {-# UNPACK #-} !Int }
      
      Then we do not want to get this:
        T2070.get =
          \ (tpl_B1 :: T2070.Foo) ->
          case tpl_B1 of tpl1_B2 { T2070.Foo rb_B4 ->
              let {
                ipv_B3 [Just S] :: GHC.Base.Int
                [Str: DmdType m]
                ipv_B3 = GHC.Base.I# rb_B4
              } in  ipv_B3 }
      
      If this goes through to codegen, we'll generate bad code.  Admittedly,
      this only matters when the selector is used in a curried way (e.g
      map get xs), but nevertheless it's silly.
      
      This patch injects the implicit bindings in SimplCore, before the
      simplifier runs.  That slows the simplifier a little, because it has
      to look at some extra bindings; but it's probably a slight effect.
      If it turns out to matter I suppose we can always inject them later,
      e.g. just before the final simplification.
      
      An unexpected (to me) consequence is that we get some specialisation rules
      for class-method selectors.  E.g. we get a rule
      	RULE  (==) Int dInt = eqInt
      There's no harm in this, but not much benefit either, because the 
      same result will happen when we inline (==) and dInt, but it's perhaps
      more direct.
      
      5952ef0d
    • simonpj@microsoft.com's avatar
      Make do-notation a bit more flexible (Trac #1537) · bddd4b23
      simonpj@microsoft.com authored
      This is a second attempt to fix #1537: to make the static typechecking
      of do-notation behave just like the desugared version of the same thing.
      This should allow parameterised monads to work properly (see Oleg's comment
      in the above ticket).
      
      We can probably merge to 6.8.3 if it goes smoothly.
      
      Incidentally, the resulting setup suffers from greater type ambiguity
      if (>>=) has a very general type.  So test rebindable6 no longer works
      (at least not without more type signatures), and rebindable5 requires
      extra functional dependencies.  But they are weird tests.
      bddd4b23
    • simonpj@microsoft.com's avatar
      White space only · df61ac58
      simonpj@microsoft.com authored
      df61ac58
    • Simon Marlow's avatar
      FIX #2047: Windows (and older Unixes): align info tables to 4 bytes, not 2 · 07f4b813
      Simon Marlow authored
      Perhaps in the past '.align 2' meant align to 4 bytes, but nowadays it
      means align to 2 bytes.  The compacting collector requires info tables
      to be aligned to 4 bytes, because it stores tag bits in the low 2
      bits.
      
      This only affects -fvia-C - the native code generator was already
      emitting the correct alignment.  The incorrect alignment might well
      have been adversely affecting performance with -fvia-C on Windows.
      07f4b813
    • chak@cse.unsw.edu.au.'s avatar
      db54c49c
    • chak@cse.unsw.edu.au.'s avatar
      a5c67ece
    • chak@cse.unsw.edu.au.'s avatar
      Lambda logo for packages · 92c01d82
      chak@cse.unsw.edu.au. authored
      - This image is in the public domain, cf 
        http://en.wikipedia.org/wiki/Image:Greek_lc_lamda_thin.svg
      92c01d82
    • chak@cse.unsw.edu.au.'s avatar
      xcode build target for fixed /Library/Frameworks inst · c72f2cb1
      chak@cse.unsw.edu.au. authored
      - Also moving all MacOS-specific Makefile components into 
        distrib/MacOS/Makefile
      c72f2cb1
  2. 02 Feb, 2008 1 commit
    • chak@cse.unsw.edu.au.'s avatar
      First stab at an installer package for the Mac · c222ce6d
      chak@cse.unsw.edu.au. authored
      - GHC as a Mac framework
      - I tried to make a package where the user could choose whether to install
        in /Library/Frameworks or ~/Library/Frameworks (to allow installation for
        non-admins).  However, that doesn't work well without including the whole
        distribution twice as the decision as to whether the admin password needs
        to be entered is made at packaging time (not at install time).
      c222ce6d
  3. 04 Feb, 2008 1 commit
    • Simon Marlow's avatar
      Support for using libffi to implement FFI calls in GHCi (#631) · 937eb1f1
      Simon Marlow authored
      This means that an unregisterised build on a platform not directly
      supported by GHC can now have full FFI support using libffi.
      
      Also in this commit:
      
       - use PrimRep rather than CgRep to describe FFI args in the byte
         code generator.  No functional changes, but PrimRep is more correct.
      
       - change TyCon.sizeofPrimRep to primRepSizeW, which is more useful
      937eb1f1
  4. 04 Jan, 2008 1 commit
  5. 04 Feb, 2008 1 commit
  6. 03 Feb, 2008 3 commits
  7. 02 Feb, 2008 2 commits
  8. 30 Jan, 2008 1 commit
  9. 01 Feb, 2008 3 commits
    • Simon Marlow's avatar
      UNDO: Be a little keener to inline · 2859b531
      Simon Marlow authored
      This patch caused at least the following test failures:
         1744(normal)
         ghci028(ghci)
         unicode001(normal)
      and additionally made the stage3 build fail.  
      
      A little more validation please!
      
      I didn't find the exact cause of the failure yet, but it appears that
      the Lexer is miscompiled in some strange way.  If any of {Encoding,
      StringBuffer, or Lexer} are compiled without -O, the problem goes
      away.
      2859b531
    • Simon Marlow's avatar
      FIX BUILD with GHC 6.4.x · e4fa0854
      Simon Marlow authored
      e4fa0854
    • Simon Marlow's avatar
      FIX BUILD with ghc-6.4.x · 21c9699e
      Simon Marlow authored
      21c9699e
  10. 29 Jan, 2008 1 commit
  11. 31 Jan, 2008 1 commit
  12. 29 Jan, 2008 1 commit
  13. 28 Jan, 2008 3 commits
  14. 30 Jan, 2008 1 commit
  15. 27 Jan, 2008 12 commits