[commit: ghc] master: Generate correct LLVM for the new register allocation scheme. (dcf88e6)

Geoffrey Mainland <[email protected]>
Newsgroups gmane.comp.lang.haskell.cvs.ghc
Message-ID <[email protected]>
Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

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

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

commit dcf88e66caefb3e79e68d4c149a878bc6eca639e
Author: Geoffrey Mainland <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.