Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/dcf88e66caefb3e79e68d4c149a878bc6eca639e

>---------------------------------------------------------------

commit dcf88e66caefb3e79e68d4c149a878bc6eca639e
Author: Geoffrey Mainland <gmain...@microsoft.com>
Date:   Thu Oct 18 15:43:27 2012 +0100

    Generate correct LLVM for the new register allocation scheme.
    
    We now have accurate global register liveness information attached to all 
Cmm
    procedures and jumps. With this patch, the LLVM back end uses this 
information
    to pass only the live floating point (F and D) registers on tail calls. This
    makes the LLVM back end compatible with the new register allocation 
strategy.
    
    Ideally the GHC LLVM calling convention would put all registers that are 
always
    live first in the parameter sequence. Unfortunately the specification is 
written
    so that on x86-64 SpLim (always live) is passed after the R registers. 
Therefore
    we must always pass *something* in the R registers, so we pass the LLVM 
value
    undef.

 compiler/llvmGen/LlvmCodeGen.hs         |    4 +-
 compiler/llvmGen/LlvmCodeGen/Base.hs    |   38 ++++++++++++-------
 compiler/llvmGen/LlvmCodeGen/CodeGen.hs |   63 +++++++++++++++----------------
 compiler/llvmGen/LlvmCodeGen/Ppr.hs     |    4 +-
 4 files changed, 59 insertions(+), 50 deletions(-)


Diff suppressed because of size. To see it, use:

    git show dcf88e66caefb3e79e68d4c149a878bc6eca639e

_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to