Fix #2961: we lost some of the generated code for stack args in genCCall
authorSimon Marlow <marlowsd@gmail.com>
Mon, 26 Jan 2009 15:02:09 +0000 (15:02 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Mon, 26 Jan 2009 15:02:09 +0000 (15:02 +0000)
A real bug in the x86_64 native code gen: nice!

This bug would have been caught by -Wall, and I would have gone though
and Walled this file but I know Ben is hacking on this file quite
heavily and I don't want to create undue conflicts.  Ben: it would be
nice to enable -Wall here when you have time.

compiler/nativeGen/MachCodeGen.hs

index d9b2028..1cfc7a3 100644 (file)
@@ -3567,8 +3567,9 @@ genCCall target dest_regs args = do
         (arg_op, arg_code) <- getOperand arg
          delta <- getDeltaNat
          setDeltaNat (delta-arg_size)
-        let code' = code `appOL` toOL [PUSH II64 arg_op, 
-                                       DELTA (delta-arg_size)]
+        let code' = code `appOL` arg_code `appOL` toOL [
+                        PUSH II64 arg_op, 
+                       DELTA (delta-arg_size)]
         push_args rest code'
        where
          arg_rep = cmmExprType arg