On Wed, Dec 19, 2007 at 04:12:55AM -0500, Ross Ridge wrote: > > I'm suggesting a different defintion of STACK_BOUNDARY which wouldn't, > if strictly followed, result STACK_BOUNDARY being defined as 8 on > the i386. The i386 hardware doesn't enforce a minimum alignment on the > stack pointer.
On i386, you can only push/pop 2 or 4 bytes. On x86-64, you can only push/pop 2 or 8 bytes. > stack. In context of your proposal, defining STACK_BOUNDARY this way, > as a requirement imposed on GCC by an ABI (or at least by convention), > not the hardware, is important. Without an ABI requirement, there's > nothing that would prohibit an i386 leaf function from adjusting the > stack in a way that leaves the stack 1- or 2-byte aligned. > I don't mind changing the definition of STACK_BOUNDARY. It won't affect our proposal. However, please don't use ABI when defining STACK_BOUNDARY since a given hardware can have more than one ABIs and only one STACK_BOUNDARY. H.J.