1. 17 Feb, 2012 1 commit
  2. 14 Feb, 2012 1 commit
  3. 31 Jan, 2012 2 commits
  4. 13 Jan, 2012 2 commits
  5. 12 Jan, 2012 1 commit
  6. 10 Jan, 2012 1 commit
    • dterei's avatar
      Track STG live register information for use in LLVM · 4384e146
      dterei authored
      We now carry around with CmmJump statements a list of
      the STG registers that are live at that jump site.
      This is used by the LLVM backend so it can avoid
      unnesecarily passing around dead registers, improving
      perfromance. This gives us the framework to finally
      fix trac #4308.
      4384e146
  7. 06 Jan, 2012 2 commits
  8. 04 Dec, 2011 2 commits
  9. 29 Nov, 2011 1 commit
  10. 28 Nov, 2011 1 commit
    • Ian Lynagh's avatar
      Implement a capi calling convention; fixes #2979 · 36f8cabe
      Ian Lynagh authored
      In GHC, this provides an easy way to call a C function via a C wrapper.
      This is important when the function is really defined by CPP.
      
      Requires the new CApiFFI extension.
      
      Not documented yet, as it's still an experimental feature at this stage.
      36f8cabe
  11. 22 Nov, 2011 2 commits
    • dterei's avatar
      Formatting fix · f1a6a5cf
      dterei authored
      f1a6a5cf
    • dterei's avatar
      Specify unsupported ops, don't just use a catch all · 53a16984
      dterei authored
      Better to specifically list the unsupported cases in code
      than to have a catch all that panics. The later method hides
      problems when new constructors are added such as the recent
      additions to the supported Cmm prim ops that weren't ported
      to the C backend since no one noticed.
      53a16984
  12. 15 Oct, 2011 1 commit
  13. 02 Oct, 2011 1 commit
  14. 25 Aug, 2011 1 commit
  15. 21 Aug, 2011 1 commit
  16. 06 Jul, 2011 1 commit
  17. 13 Jun, 2011 1 commit
  18. 31 May, 2011 1 commit
  19. 24 Jan, 2011 1 commit
    • Simon Marlow's avatar
      Merge in new code generator branch. · 889c084e
      Simon Marlow authored
      This changes the new code generator to make use of the Hoopl package
      for dataflow analysis.  Hoopl is a new boot package, and is maintained
      in a separate upstream git repository (as usual, GHC has its own
      lagging darcs mirror in http://darcs.haskell.org/packages/hoopl).
      
      During this merge I squashed recent history into one patch.  I tried
      to rebase, but the history had some internal conflicts of its own
      which made rebase extremely confusing, so I gave up. The history I
      squashed was:
      
        - Update new codegen to work with latest Hoopl
        - Add some notes on new code gen to cmm-notes
        - Enable Hoopl lag package.
        - Add SPJ note to cmm-notes
        - Improve GC calls on new code generator.
      
      Work in this branch was done by:
         - Milan Straka <fox@ucw.cz>
         - John Dias <dias@cs.tufts.edu>
         - David Terei <davidterei@gmail.com>
      
      Edward Z. Yang <ezyang@mit.edu> merged in further changes from GHC HEAD
      and fixed a few bugs.
      889c084e
  20. 04 Oct, 2010 1 commit
  21. 21 Jul, 2010 1 commit
  22. 18 Jul, 2010 1 commit
  23. 12 Jul, 2010 1 commit
  24. 07 Jul, 2010 1 commit
  25. 05 Jul, 2010 1 commit
    • dterei's avatar
      LLVM: Stop llvm saving stg caller-save regs across C calls · 0d657c49
      dterei authored
      This is already handled by the Cmm code generator so LLVM is simply
      duplicating work. LLVM also doesn't know which ones are actually live
      so saves them all which causes a fair performance overhead for C calls
      on x64. We stop llvm saving them across the call by storing undef to
      them just before the call.
      0d657c49
  26. 02 Jul, 2010 1 commit
  27. 01 Jul, 2010 1 commit
  28. 30 Jun, 2010 1 commit
    • dterei's avatar
      LLVM: Use getelementptr instruction for a lot of situations · a42400e6
      dterei authored
      LLVM supports creating pointers in two ways, firstly through
      pointer arithmetic (by casting between pointers and ints)
      and secondly using the getelementptr instruction. The second way
      is preferable as it gives LLVM more information to work with.
      
      This patch changes a lot of pointer related code from the first
      method to the getelementptr method.
      a42400e6
  29. 28 Jun, 2010 3 commits
  30. 21 Jun, 2010 1 commit
    • dterei's avatar
      Allow for stg registers to have pointer type in llvm BE. · 4738e101
      dterei authored
      Before all the stg registers were simply a bit type or
      floating point type but now they can be declared to have
      a pointer type to one of these. This will allow various
      optimisations in the future in llvm since the type is
      more accurate.
      4738e101
  31. 24 Jun, 2010 1 commit
  32. 21 Jun, 2010 2 commits