avr.c (avr_hard_regno_mode_ok): Do not allow r29 which may overwrite the high byte of the frame pointer.
* config/avr/avr.c (avr_hard_regno_mode_ok): Do not allow r29 which may overwrite the high byte of the frame pointer. From-SVN: r50138
This commit is contained in:
parent
9b420a6a58
commit
b96c434c39
|
@ -1,3 +1,8 @@
|
|||
2002-02-28 Marek Michalkiewicz <marekm@amelek.gda.pl>
|
||||
|
||||
* config/avr/avr.c (avr_hard_regno_mode_ok): Do not allow r29
|
||||
which may overwrite the high byte of the frame pointer.
|
||||
|
||||
2002-02-28 Bo Thorsen <bo@suse.de>
|
||||
|
||||
* config/i386/linux64.h (LINK_SPEC): Fix 32/64 bit compilation.
|
||||
|
|
|
@ -5210,6 +5210,13 @@ avr_hard_regno_mode_ok (regno, mode)
|
|||
int regno;
|
||||
enum machine_mode mode;
|
||||
{
|
||||
/* Bug workaround: recog.c (peep2_find_free_register) and probably
|
||||
a few other places assume that the frame pointer is a single hard
|
||||
register, so r29 may be allocated and overwrite the high byte of
|
||||
the frame pointer. Do not allow any value to start in r29. */
|
||||
if (regno == REG_Y + 1)
|
||||
return 0;
|
||||
|
||||
if (mode == QImode)
|
||||
return 1;
|
||||
/* if (regno < 24 && !AVR_ENHANCED)
|
||||
|
|
Loading…
Reference in New Issue