Excess registers pushed - regs_ever_live not right way?

Andrew Hutchinson andrewhutchinson@cox.net
Thu Feb 28 02:01:00 GMT 2008


Register contains  parameter that is passed to function. This register 
is not part of call used set.

If this type of register were modified by function, then it would be 
saved by function.

If this register is not modified by function, it should not be saved. 
This is true even if function is not a leaf function (as same register 
would be preserved by deeper calls)


Andy



Seongbae Park (박성배, 朴成培) wrote:
> On Wed, Feb 27, 2008 at 5:16 PM, Andrew Hutchinson
> <andrewhutchinson@cox.net> wrote:
>   
>> Register saves by prolog (pushes) are typically made with reference to
>>  "df_regs_ever_live_p()" or  "regs_ever_live. "||
>>
>>  If my understanding is correct,  these calls reflect register USEs and
>>  not register DEFs. So if register is used in a function, but not
>>  otherwise changed, it will get pushed unnecessarily on stack by prolog.
>>     
>
> This implies that the register is either a global register
> or a parameter register, in either case it won't be saved/restored
> as callee save.
> What kind of a register is it and how com there's only use of it in a function
> but it's not a global ?
>
> Seongbae
>
>   



More information about the Gcc mailing list