Commit ab73ca61 authored by simonmar's avatar simonmar
Browse files

[project @ 2002-03-14 17:05:13 by simonmar]

Back out previous fix, it was wrong.
parent 0e8e53db
...@@ -2752,10 +2752,6 @@ genCCall fn cconv ret_rep args ...@@ -2752,10 +2752,6 @@ genCCall fn cconv ret_rep args
| cconv == StdCallConv = '@':show tot_arg_size | cconv == StdCallConv = '@':show tot_arg_size
| otherwise = "" | otherwise = ""
-- floats are always promoted to doubles when passed to a ccall
promote_size F = DF
promote_size sz = sz
arg_size DF = 8 arg_size DF = 8
arg_size F = 4 arg_size F = 4
arg_size _ = 4 arg_size _ = 4
...@@ -2779,17 +2775,14 @@ genCCall fn cconv ret_rep args ...@@ -2779,17 +2775,14 @@ genCCall fn cconv ret_rep args
| otherwise | otherwise
= get_op arg `thenNat` \ (code, reg, sz) -> = get_op arg `thenNat` \ (code, reg, sz) ->
getDeltaNat `thenNat` \ delta -> getDeltaNat `thenNat` \ delta ->
let arg_size sz `bind` \ size ->
real_sz = promote_size sz
size = arg_size real_sz
in
setDeltaNat (delta-size) `thenNat` \ _ -> setDeltaNat (delta-size) `thenNat` \ _ ->
if (case real_sz of DF -> True; _ -> False) if (case sz of DF -> True; F -> True; _ -> False)
then returnNat (size, then returnNat (size,
code `appOL` code `appOL`
toOL [SUB L (OpImm (ImmInt size)) (OpReg esp), toOL [SUB L (OpImm (ImmInt size)) (OpReg esp),
DELTA (delta-size), DELTA (delta-size),
GST DF reg (AddrBaseIndex (Just esp) GST sz reg (AddrBaseIndex (Just esp)
Nothing Nothing
(ImmInt 0))] (ImmInt 0))]
) )
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment