diff options
author | Ian Lynagh <igloo@earth.li> | 2012-03-21 23:47:59 +0000 |
---|---|---|
committer | Ian Lynagh <igloo@earth.li> | 2012-03-21 23:47:59 +0000 |
commit | 1dee0bbad9ebd94d3690d178a1b882db3ed6def6 (patch) | |
tree | 6691c5fdd7bdaf2b7a5e9be9c63e3710a1bb869a /compiler/nativeGen | |
parent | 7641d6160a049252e402ea2b2864969a839ce711 (diff) | |
download | haskell-1dee0bbad9ebd94d3690d178a1b882db3ed6def6.tar.gz |
Implement the Adjustor for Win64
Diffstat (limited to 'compiler/nativeGen')
-rw-r--r-- | compiler/nativeGen/X86/CodeGen.hs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/compiler/nativeGen/X86/CodeGen.hs b/compiler/nativeGen/X86/CodeGen.hs index 8e66bff349..be07078c1a 100644 --- a/compiler/nativeGen/X86/CodeGen.hs +++ b/compiler/nativeGen/X86/CodeGen.hs @@ -2110,10 +2110,14 @@ genCCall64' platform target dest_regs args = do load_args_win ((CmmHinted arg _) : rest) usedInt usedFP ((ireg, freg) : regs) code | isFloatType arg_rep = do - -- XXX Should also set ireg? arg_code <- getAnyReg arg load_args_win rest (ireg : usedInt) (freg : usedFP) regs - (code `appOL` arg_code freg) + (code `appOL` + arg_code freg `snocOL` + -- If we are calling a varargs function + -- then we need to define ireg as well + -- as freg + MOV II64 (OpReg freg) (OpReg ireg)) | otherwise = do arg_code <- getAnyReg arg load_args_win rest (ireg : usedInt) usedFP regs |