1. 24 Feb, 2012 1 commit
  2. 23 Feb, 2012 1 commit
  3. 17 Feb, 2012 1 commit
  4. 14 Feb, 2012 1 commit
  5. 31 Jan, 2012 2 commits
  6. 13 Jan, 2012 3 commits
  7. 12 Jan, 2012 2 commits
  8. 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
  9. 06 Jan, 2012 2 commits
  10. 06 Dec, 2011 1 commit
    • dterei's avatar
      Fix trac # 5486 · fe60dd4a
      dterei authored
      LLVM has a problem when the user imports some FFI types
      like memcpy and memset in a manner that conflicts with
      the types that GHC uses internally.
      
      So now we pre-initialise the environment with the most
      general types for these functions.
      fe60dd4a
  11. 04 Dec, 2011 4 commits
  12. 29 Nov, 2011 1 commit
  13. 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
  14. 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
  15. 15 Oct, 2011 1 commit
  16. 02 Oct, 2011 1 commit
  17. 25 Aug, 2011 1 commit
  18. 21 Aug, 2011 2 commits
    • kgardas's avatar
      enable ARM specific target data layout and triple again · 748883b4
      kgardas authored
      This patch is allowed by the 'on ARMv7 with VFPv3[D16] support pass
       appropriate -mattr value to LLVM llc' patch. The trick is that LLVM
      by default (probably!) does not enable VFP, but GHC requires it
      so LLVM's llc asserts on unavailable floating point register. i.e. GHC/LLVM
      backend compiles into LLVM code which is using floats, but llc thinks
      no float regs for this are available. Passing appropriate llc option
      which is implemented in patch mentioned above fixes this issue.
      748883b4
    • dterei's avatar
      Add popcnt support to LLVM backend · 2906db6c
      dterei authored
      2906db6c
  19. 10 Aug, 2011 3 commits
  20. 06 Jul, 2011 2 commits
    • batterseapower's avatar
      Refactoring: explicitly mark whether we have an info table in RawCmm · 41ca0b8d
      batterseapower authored
      I introduced this to support explicitly recording the info table label
      in RawCmm for another patch I am working on, but it turned out to lead
      to significant simplification in those parts of the compiler that
      consume RawCmm.
      
      Now, instead of lots of tests for null [CmmStatic] we have a simple
      test of a Maybe, and have reduced the number of guys that need to know
      how to convert entry->info labels by a TON. There are only 3 callers
      of that function now!
      41ca0b8d
    • dterei's avatar
      Some general code cleaning in LLVM backend · 5505fbb7
      dterei authored
      5505fbb7
  21. 05 Jul, 2011 2 commits
    • batterseapower's avatar
    • batterseapower's avatar
      Refactoring: use a structured CmmStatics type rather than [CmmStatic] · 54843b5b
      batterseapower authored
      I observed that the [CmmStatics] within CmmData uses the list in a very stylised way.
      The first item in the list is almost invariably a CmmDataLabel. Many parts of the
      compiler pattern match on this list and fail if this is not true.
      
      This patch makes the invariant explicit by introducing a structured type CmmStatics
      that holds the label and the list of remaining [CmmStatic].
      
      There is one wrinkle: the x86 backend sometimes wants to output an alignment directive just
      before the label. However, this can be easily fixed up by parameterising the native codegen
      over the type of CmmStatics (though the GenCmmTop parameterisation) and using a pair
      (Alignment, CmmStatics) there instead.
      
      As a result, I think we will be able to remove CmmAlign and CmmDataLabel from the CmmStatic
      data type, thus nuking a lot of code and failing pattern matches. This change will come as part
      of my next patch.
      54843b5b
  22. 28 Jun, 2011 1 commit
  23. 13 Jun, 2011 1 commit
  24. 31 May, 2011 1 commit
  25. 04 May, 2011 1 commit
    • dterei's avatar
      LLVM: Support LLVM 2.9 (#5103) · 50e0db45
      dterei authored
      Instead of using the GNU As subsection feature on Linux/Windows
      for TNTC we now use the LLVM Mangler on all platforms.
      50e0db45
  26. 19 Apr, 2011 1 commit