This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: more m68k breakage on m68k-linux
- From: Bernardo Innocenti <bernie at develer dot com>
- To: Richard Zidlicky <rz at linux-m68k dot org>
- Cc: peter at baradas dot org, Matthias Klose <doko at cs dot tu-berlin dot de>, gcc at gcc dot gnu dot org, Gunther Nikl <gni at gecko dot de>, Andreas Schwab <schwab at suse dot de>
- Date: Tue, 02 Mar 2004 01:18:51 +0100
- Subject: Re: more m68k breakage on m68k-linux
- Organization: Develer S.r.l.
- References: <4009E670.5090600@develer.com> <16394.22429.131429.162236@gargle.gargle.HOWL> <m31xpxs6wx.fsf@whitebox.m5r.de> <20040301200553.GA4188@linux-m68k.org> <20040301215409.GA18138@linux-m68k.org>
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/