From 72475c8247406b64b8d5d9441c0b37b17d703a54 Mon Sep 17 00:00:00 2001 From: Simon Marlow Date: Wed, 13 Jun 2007 14:24:31 +0000 Subject: [PATCH] FIX #1424: x86_64 NCG generated wrong code for foreign call with >8 double args I guess we have a missing test... I'll add one --- compiler/nativeGen/MachCodeGen.hs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/compiler/nativeGen/MachCodeGen.hs b/compiler/nativeGen/MachCodeGen.hs index 0bab29c..d371214 100644 --- a/compiler/nativeGen/MachCodeGen.hs +++ b/compiler/nativeGen/MachCodeGen.hs @@ -3361,9 +3361,9 @@ genCCall target dest_regs args vols = do (arg_reg, arg_code) <- getSomeReg arg delta <- getDeltaNat setDeltaNat (delta-arg_size) - let code' = code `appOL` toOL [ - MOV arg_rep (OpReg arg_reg) (OpAddr (spRel 0)), + let code' = code `appOL` arg_code `appOL` toOL [ SUB wordRep (OpImm (ImmInt arg_size)) (OpReg rsp) , + MOV arg_rep (OpReg arg_reg) (OpAddr (spRel 0)), DELTA (delta-arg_size)] push_args rest code' -- 1.7.10.4