[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.