From: Georg-Johann Lay Date: Thu, 25 Aug 2011 13:50:30 +0000 (+0000) Subject: avr.c (reg_class_tab): Make local to avr_regno_reg_class. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=61af7eb4d1466f5cf325b3e041386050a45709c9;p=gcc.git avr.c (reg_class_tab): Make local to avr_regno_reg_class. * config/avr/avr.c (reg_class_tab): Make local to avr_regno_reg_class. Return smallest register class available. From-SVN: r178063 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 44fd17c58a6..73ac31982ea 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-08-25 Georg-Johann Lay + + * config/avr/avr.c (reg_class_tab): Make local to + avr_regno_reg_class. Return smallest register class available. + 2011-08-25 Georg-Johann Lay * config/avr/avr.c (STR_PREFIX_P): New Define. diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 649ea0bc89f..7575fc56d2f 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -281,22 +281,6 @@ avr_option_override (void) init_machine_status = avr_init_machine_status; } -/* return register class from register number. */ - -static const enum reg_class reg_class_tab[]={ - GENERAL_REGS,GENERAL_REGS,GENERAL_REGS,GENERAL_REGS,GENERAL_REGS, - GENERAL_REGS,GENERAL_REGS,GENERAL_REGS,GENERAL_REGS,GENERAL_REGS, - GENERAL_REGS,GENERAL_REGS,GENERAL_REGS,GENERAL_REGS,GENERAL_REGS, - GENERAL_REGS, /* r0 - r15 */ - LD_REGS,LD_REGS,LD_REGS,LD_REGS,LD_REGS,LD_REGS,LD_REGS, - LD_REGS, /* r16 - 23 */ - ADDW_REGS,ADDW_REGS, /* r24,r25 */ - POINTER_X_REGS,POINTER_X_REGS, /* r26,27 */ - POINTER_Y_REGS,POINTER_Y_REGS, /* r28,r29 */ - POINTER_Z_REGS,POINTER_Z_REGS, /* r30,r31 */ - STACK_REG,STACK_REG /* SPL,SPH */ -}; - /* Function to set up the backend function structure. */ static struct machine_function * @@ -310,8 +294,32 @@ avr_init_machine_status (void) enum reg_class avr_regno_reg_class (int r) { + static const enum reg_class reg_class_tab[] = + { + R0_REG, + /* r1 - r15 */ + NO_LD_REGS, NO_LD_REGS, NO_LD_REGS, + NO_LD_REGS, NO_LD_REGS, NO_LD_REGS, NO_LD_REGS, + NO_LD_REGS, NO_LD_REGS, NO_LD_REGS, NO_LD_REGS, + NO_LD_REGS, NO_LD_REGS, NO_LD_REGS, NO_LD_REGS, + /* r16 - r23 */ + SIMPLE_LD_REGS, SIMPLE_LD_REGS, SIMPLE_LD_REGS, SIMPLE_LD_REGS, + SIMPLE_LD_REGS, SIMPLE_LD_REGS, SIMPLE_LD_REGS, SIMPLE_LD_REGS, + /* r24, r25 */ + ADDW_REGS, ADDW_REGS, + /* X: r26, 27 */ + POINTER_X_REGS, POINTER_X_REGS, + /* Y: r28, r29 */ + POINTER_Y_REGS, POINTER_Y_REGS, + /* Z: r30, r31 */ + POINTER_Z_REGS, POINTER_Z_REGS, + /* SP: SPL, SPH */ + STACK_REG, STACK_REG + }; + if (r <= 33) return reg_class_tab[r]; + return ALL_REGS; }