FIX #1424: x86_64 NCG generated wrong code for foreign call with >8 double args
authorSimon Marlow <simonmar@microsoft.com>
Wed, 13 Jun 2007 14:24:31 +0000 (14:24 +0000)
committerSimon Marlow <simonmar@microsoft.com>
Wed, 13 Jun 2007 14:24:31 +0000 (14:24 +0000)
I guess we have a missing test... I'll add one

compiler/nativeGen/MachCodeGen.hs

index 0bab29c..d371214 100644 (file)
@@ -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'