This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Excess registers pushed - regs_ever_live not right way?


You can use DF_REG_DEF_COUNT() - if this is indeed a parameter register,
there should be only one def (artificial def) or no def at all.
Or if you want to see all defs for the reg,
follow DF_REG_DEF_CHAIN().

Seongbae

On Wed, Feb 27, 2008 at 6:03 PM, Andrew Hutchinson
<andrewhutchinson@cox.net> wrote:
> 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
>  >
>  >
>



-- 
#pragma ident "Seongbae Park, compiler, http://seongbae.blogspot.com";

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]