> 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