summaryrefslogtreecommitdiff
path: root/compiler/codeGen
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
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')
-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,