1. 30 Oct, 2012 1 commit
  2. 18 Oct, 2012 1 commit
    • ian@well-typed.com's avatar
      Refactor the way dump flags are handled · d4a19643
      ian@well-typed.com authored
      We were being inconsistent about how we tested whether dump flags
      were enabled; in particular, sometimes we also checked the verbosity,
      and sometimes we didn't.
      
      This lead to oddities such as "ghc -v4" printing an "Asm code" section
      which didn't contain any code, and "-v4" enabled some parts of
      "-ddump-deriv" but not others.
      
      Now all the tests use dopt, which also takes the verbosity into account
      as appropriate.
      d4a19643
  3. 16 Oct, 2012 1 commit
    • ian@well-typed.com's avatar
      Some alpha renaming · cd33eefd
      ian@well-typed.com authored
      Mostly d -> g (matching DynFlag -> GeneralFlag).
      Also renamed if* to when*, matching the Haskell if/when names
      cd33eefd
  4. 08 Oct, 2012 1 commit
    • Simon Marlow's avatar
      Produce new-style Cmm from the Cmm parser · a7c0387d
      Simon Marlow authored
      The main change here is that the Cmm parser now allows high-level cmm
      code with argument-passing and function calls.  For example:
      
      foo ( gcptr a, bits32 b )
      {
        if (b > 0) {
           // we can make tail calls passing arguments:
           jump stg_ap_0_fast(a);
        }
      
        return (x,y);
      }
      
      More details on the new cmm syntax are in Note [Syntax of .cmm files]
      in CmmParse.y.
      
      The old syntax is still more-or-less supported for those occasional
      code fragments that really need to explicitly manipulate the stack.
      However there are a couple of differences: it is now obligatory to
      give a list of live GlobalRegs on every jump, e.g.
      
        jump %ENTRY_CODE(Sp(0)) [R1];
      
      Again, more details in Note [Syntax of .cmm files].
      
      I have rewritten most of the .cmm files in the RTS into the new
      syntax, except for AutoApply.cmm which is generated by the genapply
      program: this file could be generated in the new syntax instead and
      would probably be better off for it, but I ran out of enthusiasm.
      
      Some other changes in this batch:
      
       - The PrimOp calling convention is gone, primops now use the ordinary
         NativeNodeCall convention.  This means that primops and "foreign
         import prim" code must be written in high-level cmm, but they can
         now take more than 10 arguments.
      
       - CmmSink now does constant-folding (should fix #7219)
      
       - .cmm files now go through the cmmPipeline, and as a result we
         generate better code in many cases.  All the object files generated
         for the RTS .cmm files are now smaller.  Performance should be
         better too, but I haven't measured it yet.
      
       - RET_DYN frames are removed from the RTS, lots of code goes away
      
       - we now have some more canned GC points to cover unboxed-tuples with
         2-4 pointers, which will reduce code size a little.
      a7c0387d
  5. 20 Sep, 2012 7 commits
  6. 14 Sep, 2012 7 commits
  7. 10 Sep, 2012 1 commit
  8. 28 Aug, 2012 1 commit
    • ian@well-typed.com's avatar
      Move more code into codeGen/CodeGen/Platform.hs · c0907ed2
      ian@well-typed.com authored
      HaskellMachRegs.h is no longer included in anything under compiler/
      
      Also, includes/CodeGen.Platform.hs now includes "stg/MachRegs.h"
      rather than <stg/MachRegs.h> which means that we always get the file
      from the tree, rather than from the bootstrapping compiler.
      c0907ed2
  9. 21 Aug, 2012 3 commits
  10. 06 Aug, 2012 1 commit
  11. 02 Aug, 2012 1 commit
  12. 31 Jul, 2012 1 commit
    • Simon Marlow's avatar
      Improve code generated when real registers are clobbered · d2361423
      Simon Marlow authored
      There was a long-standing ToDo here that I just did: if a real
      register is clobbered by the current instruction, then we should move
      it to another free register rather than spilling it to memory.  This
      case crops up more often now that the register allocator can allocate
      into the fixed Rn registers.
      d2361423
  13. 30 Jul, 2012 2 commits
  14. 16 Jul, 2012 2 commits
  15. 15 Jul, 2012 1 commit
  16. 06 Jul, 2012 3 commits
  17. 13 Jun, 2012 3 commits
  18. 12 Jun, 2012 1 commit
  19. 27 Apr, 2012 1 commit
    • kgardas's avatar
      add support for ARM hard-float ABI (fixes #5914) · 3144f856
      kgardas authored
      This patch enhances Platform's ArchARM to include ARM ABI value. It also
      tweaks configure machinery to detect hard-float ABI and to set it wherever
      needed. Finally when hard-float ABI is in use, pass appropriate compiler
      option to the LLVM's llc. Fixes #5914.
      3144f856
  20. 13 Dec, 2011 1 commit