Ivan Shcherbakov <shcherba...@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