avr.c (reg_class_tab): Make local to avr_regno_reg_class.
authorGeorg-Johann Lay <avr@gjlay.de>
Thu, 25 Aug 2011 13:50:30 +0000 (13:50 +0000)
committerGeorg-Johann Lay <gjl@gcc.gnu.org>
Thu, 25 Aug 2011 13:50:30 +0000 (13:50 +0000)
* config/avr/avr.c (reg_class_tab): Make local to
avr_regno_reg_class.  Return smallest register class available.

From-SVN: r178063

gcc/ChangeLog
gcc/config/avr/avr.c

index 44fd17c58a6d57507209c55c8268addbe566f850..73ac31982eabd8fe92bd9e50cc33d91f3d1c9528 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-25  Georg-Johann Lay  <avr@gjlay.de>
+
+       * 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  <avr@gjlay.de>
        
        * config/avr/avr.c (STR_PREFIX_P): New Define.
index 649ea0bc89f29354ab77825545e29de511135942..7575fc56d2f595cdf507a6004e0c5b0df481be1c 100644 (file)
@@ -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;
 }