This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: a question about argument ARG_POINTER_REGNUM
- From: Ian Lance Taylor <iant at google dot com>
- To: Ivan Shcherbakov <shcherbakov at eit dot uni-kl dot de>
- Cc: gcc at gcc dot gnu dot org
- Date: Mon, 14 Dec 2009 15:32:00 -0800
- Subject: Re: a question about argument ARG_POINTER_REGNUM
- References: <8710072794.20091214101512@eit.uni-kl.de>
Ivan Shcherbakov <shcherbakov@eit.uni-kl.de> writes:
> I have noticed that the latest ports of GCC (e.g. i386) use a
> pseudo-register (argp in i386) defined as fixed in FIXED_REGISTERS.
> When I implement it similarly in msp430 port (instead of hardware
> register r5, add a pseudo-register marked as fixed), GCC perfectly
> works in -O2 mode, however, crashes in -O0 mode by trying to generate
> instruction setting the pseudo-register (argp) explicitly from SP.
>
> My question is whether there is a way of telling GCC that a certain
> register is a pseudo-register and should always be eliminated to
> either SP or FP. The ELIMINABLE_REGS macro is set accordingly,
> however, the actual elimination happens only with optimization turned
> on.
Putting the entry in ELIMINABLE_REGS, and defining
TARGET_CAN_ELIMINATE, should be all that is required. Registers are
eliminated at all optimization levels.
Ian