This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Wrong code: missing input reload
Bernd Schmidt schrieb:
> On 06/01/2011 05:35 PM, Georg-Johann Lay wrote:
>
>> The reason for why a subreg of hardreg is there during reload is that
>> on avr, r29:r28 is the frame pointer (word_mode is QI and Pmode is
>> HI). Because in many places of the compiler, there are tests like "if
>> (regno == FRAME_POINTER_REGNUM)", the high byte of the frame pointer
>> gets garbaged.
>
> Maybe it would help for your port to define a separate
> FRAME_POINTER_REGNUM, able to hold an HImode value, which then gets
> eliminated to HARD_FRAME_POINTER_REGNUM? This mechanism is used on many
> other ports if you need examples.
>
> Bernd
>From the internals description, HARD_FRAME_POINTER_REGNUM appears to
serve different purpose, and sources indicate that it is used similar,
i.e. per regno == HARD_FRAME_POINTER_REGNUM instead if having a rtx or
reg_class and test for overlaps.
Do you know of a target where the frame pointer spans several
word_mode registers?
Johann