1. 11 Jul, 2012 6 commits
  2. 10 Jul, 2012 7 commits
  3. 09 Jul, 2012 4 commits
    • Simon Marlow's avatar
      Don't duplicate arbitrary CmmCalls · 133552cc
      Simon Marlow authored
      133552cc
    • Simon Marlow's avatar
      Track liveness of GlobalRegs in the new code generator · c6a61235
      Simon Marlow authored
      This gives the register allocator access to R1.., F1.., D1.. etc. for
      the new code generator, and is a cheap way to eliminate all the extra
      "x = R1" assignments that we get from copyIn.
      c6a61235
    • Simon Marlow's avatar
      Don't re-allocate %esi on x86. · 10575479
      Simon Marlow authored
      Recent changes have freed up %esi for general use on x86 when it is
      not being used for R1.  However, x86 has a non-uniform register
      architecture where there is no 8-bit equivalent of %esi.  The register
      allocators aren't sophisticated enough to cope with this, so we have
      to back off and treat %esi as non-allocatable for now.  (of course,
      LLVM doesn't suffer from this problem)
      
      One workaround would be to change the calling convention to use %rbx
      for R1, however we can't change the calling convention now without
      patching LLVM too.
      10575479
    • Erik de Castro Lopo's avatar
      810f0be6
  4. 06 Jul, 2012 7 commits
  5. 05 Jul, 2012 2 commits
  6. 04 Jul, 2012 1 commit
  7. 03 Jul, 2012 3 commits
  8. 02 Jul, 2012 2 commits
  9. 29 Jun, 2012 4 commits
  10. 27 Jun, 2012 4 commits
    • Ian Lynagh's avatar
      Add some more Integer rules; fixes #6111 · c7a8941b
      Ian Lynagh authored
      c7a8941b
    • chak@cse.unsw.edu.au.'s avatar
    • chak@cse.unsw.edu.au.'s avatar
    • Simon Peyton Jones's avatar
      Add silent superclass parameters (again) · aa1e0976
      Simon Peyton Jones authored
      Silent superclass parameters solve the problem that
      the superclasses of a dicionary construction can easily
      turn out to be (wrongly) bottom.  The problem and solution
      are described in
         Note [Silent superclass arguments] in TcInstDcls
      
      I first implemented this fix (with Dimitrios) in Dec 2010, but removed
      it again in Jun 2011 becuase we thought it wasn't necessary any
      more. (The reason we thought it wasn't necessary is that we'd stopped
      generating derived superclass constraints for *wanteds*.  But we were
      wrong; that didn't solve the superclass-loop problem.)
      
      So we have to re-implement it.  It's not hard.  Main features:
      
        * The IdDetails for a DFunId says how many silent arguments it has
      
        * A DFunUnfolding describes which dictionary args are
          just parameters (DFunLamArg) and which are a function to apply
          to the parameters (DFunPolyArg).  This adds the DFunArg type
          to CoreSyn
      
        * Consequential changes to IfaceSyn.  (Binary hi file format changes
          slightly.)
      
        * TcInstDcls changes to generate the right dfuns
      
        * CoreSubst.exprIsConApp_maybe handles the new DFunUnfolding
      
      The thing taht is *not* done yet is to alter the vectoriser to
      pass the relevant extra argument when building a PA dictionary.
      aa1e0976