aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/avr/avr.h
diff options
context:
space:
mode:
authorGeorg-Johann Lay <avr@gjlay.de>2011-10-11 18:34:16 +0000
committerGeorg-Johann Lay <gjl@gcc.gnu.org>2011-10-11 18:34:16 +0000
commit8efab2c5eafbe0e3d43dccd13cbc57f62a4e672f (patch)
tree5ccf985e6fad4f353938c32fb0d87118757c65b9 /gcc/config/avr/avr.h
parent05058b6e31ec87bb08cb9457b22080afbd2c4723 (diff)
downloadgcc-8efab2c5eafbe0e3d43dccd13cbc57f62a4e672f.zip
gcc-8efab2c5eafbe0e3d43dccd13cbc57f62a4e672f.tar.gz
gcc-8efab2c5eafbe0e3d43dccd13cbc57f62a4e672f.tar.bz2
avr-protos.h (avr_mode_code_base_reg_class): New prototype.
* config/avr/avr-protos.h (avr_mode_code_base_reg_class): New prototype. (avr_regno_mode_code_ok_for_base_p): New prototype. * config/avr/avr.h (BASE_REG_CLASS): Remove. (REGNO_OK_FOR_BASE_P): Remove. (REG_OK_FOR_BASE_NOSTRICT_P): Remove. (REG_OK_FOR_BASE_STRICT_P): Remove. (MODE_CODE_BASE_REG_CLASS): New define. (REGNO_MODE_CODE_OK_FOR_BASE_P): New define. * config/avr/avr.c (avr_mode_code_base_reg_class): New function. (avr_regno_mode_code_ok_for_base_p): New function. (avr_reg_ok_for_addr_p): New static function. (avr_legitimate_address_p): Use it. Beautify. From-SVN: r179817
Diffstat (limited to 'gcc/config/avr/avr.h')
-rw-r--r--gcc/config/avr/avr.h20
1 files changed, 4 insertions, 16 deletions
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h
index 51bd942..015f12b 100644
--- a/gcc/config/avr/avr.h
+++ b/gcc/config/avr/avr.h
@@ -308,21 +308,13 @@ enum reg_class {
#define REGNO_REG_CLASS(R) avr_regno_reg_class(R)
-#define BASE_REG_CLASS (reload_completed ? BASE_POINTER_REGS : POINTER_REGS)
+#define MODE_CODE_BASE_REG_CLASS(mode, outer_code, index_code) \
+ avr_mode_code_base_reg_class (mode, outer_code, index_code)
#define INDEX_REG_CLASS NO_REGS
-#define REGNO_OK_FOR_BASE_P(r) (((r) < FIRST_PSEUDO_REGISTER \
- && ((r) == REG_X \
- || (r) == REG_Y \
- || (r) == REG_Z \
- || (r) == ARG_POINTER_REGNUM)) \
- || (reg_renumber \
- && (reg_renumber[r] == REG_X \
- || reg_renumber[r] == REG_Y \
- || reg_renumber[r] == REG_Z \
- || (reg_renumber[r] \
- == ARG_POINTER_REGNUM))))
+#define REGNO_MODE_CODE_OK_FOR_BASE_P(num, mode, outer_code, index_code) \
+ avr_regno_mode_code_ok_for_base_p (num, mode, outer_code, index_code)
#define REGNO_OK_FOR_INDEX_P(NUM) 0
@@ -381,10 +373,6 @@ typedef struct avr_args {
#define MAX_REGS_PER_ADDRESS 1
-#define REG_OK_FOR_BASE_NOSTRICT_P(X) \
- (REGNO (X) >= FIRST_PSEUDO_REGISTER || REG_OK_FOR_BASE_STRICT_P(X))
-
-#define REG_OK_FOR_BASE_STRICT_P(X) REGNO_OK_FOR_BASE_P (REGNO (X))
#define LEGITIMIZE_RELOAD_ADDRESS(X,MODE,OPNUM,TYPE,IND_L,WIN) \
do { \
rtx new_x = avr_legitimize_reload_address (X, MODE, OPNUM, TYPE, \