summaryrefslogtreecommitdiff
path: root/compiler/codeGen/CgUtils.hs
diff options
context:
space:
mode:
authorDavid Terei <davidterei@gmail.com>2010-07-05 16:26:29 +0000
committerDavid Terei <davidterei@gmail.com>2010-07-05 16:26:29 +0000
commit0d657c49385c1dd0896c02ae979da4f858c2ceb3 (patch)
tree06a1ad232f83e4cb5a1c2f14ce495b0e4439f38a /compiler/codeGen/CgUtils.hs
parentfb218a784685dc0452f3e584d238c8db7826d499 (diff)
downloadhaskell-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.hs2
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,