Skip to content
  • Julian Seward's avatar
    [project @ 2000-01-25 10:22:55 by sewardj] · b539a820
    Julian Seward authored
    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.
    b539a820