You don't need to reserve a stack slot for the return address on x86. The stack slot will be allocated implicitly by the "call" instruction.
OK, then this must be a similar issue to the register saves in the prologue. There is confusion between calculating the frame size, and calculating the amount to subtract from the stack pointer. These are not the same on x86 because some values are being pushed on the stack.
--
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com