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