more m68k breakage on m68k-linux

Bernardo Innocenti bernie@develer.com
Tue Mar 2 00:18:00 GMT 2004


Richard Zidlicky wrote:

> Note the typo "FIRST_PSEOUDO_REGISTER".. made it somewhat hard to
> find the change.

Oops!  That's very unfortunate.  I've fixed it in the ChangeLog.


> This looks highly bogus to me: You create a new "hard" register but
> dont init it anywhere (FIXED_REGISTERS,...). You change ARG_POINTER_REGNUM
> from 14 to 24 claiming in the comment that it is not a hard register..
> well it is still < FIRST_PSEOUDO_REGISTER so it is a hard register.

All registers >= FIRST_PSEUDO_REGISTER are free for use in
RTL expressions as temporaries before the register allocator
pass moves them to a hard register.

If I didn't increment FIRST_PSEUDO_REGISTER, register 25 would
be used both as the argptr and as a placeholder for some
temporary register, with very interesting consequences :-)

> Last not least there is 
> 
> #define ELIMINABLE_REGS					\
> {{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM },		\
>  { ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM },	\
>  { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM }}
> 
> and it is not clear to me how this should work if ARG_POINTER_REGNUM
> were a pseudo register.

This basically says that the arg pointer can be eliminated
against either SP or FP.  Additionally, FP can be
eliminated with SP.

-- 
  // Bernardo Innocenti - Develer S.r.l., R&D dept.
\X/  http://www.develer.com/




More information about the Gcc mailing list