diff options
Diffstat (limited to 'gcc/config/avr/avr.h')
-rw-r--r-- | gcc/config/avr/avr.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h index 90e62a3..d915aff 100644 --- a/gcc/config/avr/avr.h +++ b/gcc/config/avr/avr.h @@ -437,6 +437,11 @@ extern int avr_reg_order[]; } #define XEXP_(X,Y) (X) + +/* LEGITIMIZE_RELOAD_ADDRESS will allow register R26/27 to be used, where it + is no worse than normal base pointers R28/29 and R30/31. For example: + If base offset is greater than 63 bytes or for R++ or --R addressing. */ + #define LEGITIMIZE_RELOAD_ADDRESS(X, MODE, OPNUM, TYPE, IND_LEVELS, WIN) \ do { \ if (1&&(GET_CODE (X) == POST_INC || GET_CODE (X) == PRE_DEC)) \ @@ -448,6 +453,7 @@ do { \ } \ if (GET_CODE (X) == PLUS \ && REG_P (XEXP (X, 0)) \ + && reg_equiv_constant[REGNO (XEXP (X, 0))] == 0 \ && GET_CODE (XEXP (X, 1)) == CONST_INT \ && INTVAL (XEXP (X, 1)) >= 1) \ { \ |