Hi, This trivial patch adds INCOMING_FRAME_SP_OFFSET to current_function_static_stack_size, thus fixing the 2 (or 3, for 3 byte PC devices) byte difference between reported and actual values when using -fstack-usage.
The patch came about because of this discussion (https://gcc.gnu.org/ml/gcc/2016-05/msg00107.html). For AVRs, the return address gets pushed into the stack as part of the call instruction, and the number of bytes pushed varies by PC width. This is already taken care of when defining INCOMING_FRAME_SP_OFFSET, so I just add it to the previously computed value when setting current_function_static_stack_size. If this is ok, could someone commit please? I don't have commit access. Regards Senthil gcc/ChangeLog 2016-05-13 Senthil Kumar Selvaraj <senthil_kumar.selva...@atmel.com> * config/avr/avr.c (avr_expand_prologue): Add INCOMING_FRAME_SP_OFFSET to computed stack_usage. diff --git gcc/config/avr/avr.c gcc/config/avr/avr.c index 8de39e0..ba5cd91 100644 --- gcc/config/avr/avr.c +++ gcc/config/avr/avr.c @@ -1484,7 +1484,7 @@ avr_expand_prologue (void) avr_prologue_setup_frame (size, set); if (flag_stack_usage_info) - current_function_static_stack_size = cfun->machine->stack_usage; + current_function_static_stack_size = cfun->machine->stack_usage + INCOMING_FRAME_SP_OFFSET; }