diff --git a/ghc/compiler/nativeGen/MachCode.lhs b/ghc/compiler/nativeGen/MachCode.lhs index 222cf09bc25a3754471adc5f0caab8ecc677acfc..599c132ba2c32645896cc5b04a8fcde5feef3a1f 100644 --- a/ghc/compiler/nativeGen/MachCode.lhs +++ b/ghc/compiler/nativeGen/MachCode.lhs @@ -2307,15 +2307,14 @@ genCCall fn cconv kind args get_call_arg arg old_sz = get_op arg `thenUs` \ (code, reg, sz) -> let new_sz = old_sz + arg_size sz - in - case sz of - DF -> returnUs (new_sz, + in if (case sz of DF -> True; F -> True; _ -> False) + then returnUs (new_sz, code . - mkSeqInstr (GST DF reg + mkSeqInstr (GST sz reg (AddrBaseIndex (Just esp) Nothing (ImmInt (- new_sz)))) ) - _ -> returnUs (new_sz, + else returnUs (new_sz, code . mkSeqInstr (MOV sz (OpReg reg) (OpAddr