This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [Patch, avr] Include INCOMING_FRAME_SP_OFFSET when printing stack usage
- From: Denis Chertykov <chertykov at gmail dot com>
- To: Senthil Kumar Selvaraj <senthil_kumar dot selvaraj at atmel dot com>
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>, Eric Botcazou <botcazou at adacore dot com>, Sebastian Huber <sebastian dot huber at embedded-brains dot de>
- Date: Sat, 21 May 2016 13:54:38 +0300
- Subject: Re: [Patch, avr] Include INCOMING_FRAME_SP_OFFSET when printing stack usage
- Authentication-results: sourceware.org; auth=none
- References: <87posq2dp1 dot fsf at atmel dot com> <874m9u2ny7 dot fsf at atmel dot com>
2016-05-19 16:10 GMT+03:00 Senthil Kumar Selvaraj
<senthil_kumar.selvaraj@atmel.com>:
> Ping!
>
> Regards
> Senthil
>
> Senthil Kumar Selvaraj writes:
>
>> 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.selvaraj@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;
>> }
>>
>>
>
Committed.