> But with gcc version greater than 3.0, It allocates 104 bytes for the
> stack of a new function.
112 actually on Solaris 7 and later.
> Can anyone please let me know the reason of the difference of 8 bytes?
Obscure internal hack. :-)
/* Offset within stack frame to start allocating local variables at.
If FRAME_GROWS_DOWNWARD, this is the offset to the END of the
first local allocated. Otherwise, it is the offset to the BEGINNING
of the first local allocated. */
/* This allows space for one TFmode floating point value. */
#define STARTING_FRAME_OFFSET \
(TARGET_ARCH64 ? -16 \
: (-SPARC_STACK_ALIGN (LONG_DOUBLE_TYPE_SIZE / BITS_PER_UNIT)))
/* On SPARC it is not possible to directly move data between
GENERAL_REGS and FP_REGS. */
#define SECONDARY_MEMORY_NEEDED(CLASS1, CLASS2, MODE) \
(FP_REG_CLASS_P (CLASS1) != FP_REG_CLASS_P (CLASS2))
/* Return the stack location to use for secondary memory needed reloads.
We want to use the reserved location just below the frame pointer.
However, we must ensure that there is a frame, so use assign_stack_local
if the frame size is zero. */
#define SECONDARY_MEMORY_NEEDED_RTX(MODE) \
(get_frame_size () == 0 \
? assign_stack_local (MODE, GET_MODE_SIZE (MODE), 0) \
: gen_rtx_MEM (MODE, plus_constant (frame_pointer_rtx, \
STARTING_FRAME_OFFSET)))
--
Eric Botcazou