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: Only hard regs with pseudos considered for save/restore across calls?


On Thu, Jun 05, 2003 at 12:46:26PM -0700, Fred Fish wrote:
> In our port we have some hard registers that are essentially allocated when
> the initial RTL is generated and thus never have pseudo registers associated
> with them.  As an example, consider:
> 
>         mat0 = __ADD_M_M (mat0, mat1);
>         __CMPGT_M_M (cc0, mat0, mat1);
>         mat1 = foo (mat0, mat1);
>         mat0 = __SELECTH_M_M (cc0, mat0, mat1);

This is where you want to do something like the x86 port.  You have register
classes that match just that register, and use the normal constraints, etc. to
insure that register is allocated.  However, the problem with cc0 and friends,
is whether you can save/restore cc0 across a call.  The FRV machine for
instance was hard to restore the condition code registers.  I eventually added
code to set a register to -1/0/1 depending on the condition code register, and
then to reload it, I compared that generated value to 0.

-- 
Michael Meissner
email: gnu@the-meissners.org
http://www.the-meissners.org


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