diff options
author | David Terei <davidterei@gmail.com> | 2010-07-05 16:26:29 +0000 |
---|---|---|
committer | David Terei <davidterei@gmail.com> | 2010-07-05 16:26:29 +0000 |
commit | 0d657c49385c1dd0896c02ae979da4f858c2ceb3 (patch) | |
tree | 06a1ad232f83e4cb5a1c2f14ce495b0e4439f38a /compiler/codeGen/CgUtils.hs | |
parent | fb218a784685dc0452f3e584d238c8db7826d499 (diff) | |
download | haskell-0d657c49385c1dd0896c02ae979da4f858c2ceb3.tar.gz |
LLVM: Stop llvm saving stg caller-save regs across C calls
This is already handled by the Cmm code generator so LLVM is simply
duplicating work. LLVM also doesn't know which ones are actually live
so saves them all which causes a fair performance overhead for C calls
on x64. We stop llvm saving them across the call by storing undef to
them just before the call.
Diffstat (limited to 'compiler/codeGen/CgUtils.hs')
-rw-r--r-- | compiler/codeGen/CgUtils.hs | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/codeGen/CgUtils.hs b/compiler/codeGen/CgUtils.hs index d22fee1e75..9d111ca9d8 100644 --- a/compiler/codeGen/CgUtils.hs +++ b/compiler/codeGen/CgUtils.hs @@ -25,7 +25,7 @@ module CgUtils ( emitSwitch, emitLitSwitch, tagToClosure, - callerSaveVolatileRegs, get_GlobalReg_addr, + callerSaves, callerSaveVolatileRegs, get_GlobalReg_addr, activeStgRegs, fixStgRegisters, cmmAndWord, cmmOrWord, cmmNegate, cmmEqWord, cmmNeWord, |