[project @ 2000-01-25 10:22:55 by sewardj]
genCCall for x86, as supplied, used PUSH et al to move args onto the C
stack ready for the call. Reasonable as this seems, it causes a
problem with spill code, since the spiller spills relative to %esp and
assumes that %esp doesn't move. If the args of a ccall involved any
spilled values, the resulting code would be wrong.
The One True Way is to do it like a RISC: move args to the stack
without adjusting %esp for each argument, then adjust it all at once
immediately prior to the call insn and un-adjust it immediately
afterwards. genCCall now does this. In general, push/pop and other
C-stack effecting operations should not be generated for the same
reason.