diff options
author | Ben.Lippmeier@anu.edu.au <unknown> | 2009-04-24 06:50:53 +0000 |
---|---|---|
committer | Ben.Lippmeier@anu.edu.au <unknown> | 2009-04-24 06:50:53 +0000 |
commit | c1cecc0b8c71fc84d4d1d9f1832b5fb172fe433e (patch) | |
tree | 25ab296621138a8dd5869fa8e38f80fa03627ce5 /compiler | |
parent | 1c4738ba866893b3b5c7c9952e9a1bf48e2aa055 (diff) | |
download | haskell-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.hs | 2 |
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 |