summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorBen.Lippmeier@anu.edu.au <unknown>2009-04-24 06:50:53 +0000
committerBen.Lippmeier@anu.edu.au <unknown>2009-04-24 06:50:53 +0000
commitc1cecc0b8c71fc84d4d1d9f1832b5fb172fe433e (patch)
tree25ab296621138a8dd5869fa8e38f80fa03627ce5 /compiler
parent1c4738ba866893b3b5c7c9952e9a1bf48e2aa055 (diff)
downloadhaskell-c1cecc0b8c71fc84d4d1d9f1832b5fb172fe433e.tar.gz
Fix #3182: 64 bit FP value returned by C calls was getting trashed
movss instruction was being used to move the result into the destination register instead of movsd
Diffstat (limited to 'compiler')
-rw-r--r--compiler/nativeGen/X86/CodeGen.hs2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/nativeGen/X86/CodeGen.hs b/compiler/nativeGen/X86/CodeGen.hs
index 135ac36e8b..4cfeaccff7 100644
--- a/compiler/nativeGen/X86/CodeGen.hs
+++ b/compiler/nativeGen/X86/CodeGen.hs
@@ -1779,7 +1779,7 @@ genCCall target dest_regs args = do
assign_code [CmmHinted dest _hint] =
case typeWidth rep of
W32 | isFloatType rep -> unitOL (MOV (floatSize W32) (OpReg xmm0) (OpReg r_dest))
- W64 | isFloatType rep -> unitOL (MOV (floatSize W32) (OpReg xmm0) (OpReg r_dest))
+ W64 | isFloatType rep -> unitOL (MOV (floatSize W64) (OpReg xmm0) (OpReg r_dest))
_ -> unitOL (MOV (cmmTypeSize rep) (OpReg rax) (OpReg r_dest))
where
rep = localRegType dest