Hi Guys,

  I am applying the patch below to remove the duplicate register classes
  from the FRV backend.  This was causing problems with the IRA
  initialization code.

Cheers
  Nick

gcc/ChangeLog
2011-04-27  Nick Clifton  <ni...@redhat.com>

        * config/frv/frv.h (enum reg_class): Delete EVEN_ACC_REGS,
        ACC_REGS, FEVEN_REGS, FPR_REGS, EVEN_REGS.
        (REG_CLASS_NAMES): Likewise.
        (REG_CLASS_CONTENTS): Likewise.
        (EVEN_ACC_REGS): New macro.  Alias for QUAD_ACC_REGS.
        (ACC_REGS): New macro.  Alias for QUAD_ACC_REGS.
        (FEVEN_REGS): New macro.  Alias for QUAD_ACC_REGS.
        (FPR_REGS): New macro.  Alias for QUAD_ACC_REGS.
        (EVEN_REGS): New macro.  Alias for QUAD_REGS.
        * config/frv/frv.c (frv_secondary_reload_class): Remove use of
        duplicate register classes.
        (frv_class_likely_spileld_p): Likewise.
        (frv_register_move_cost): Likewise.

Index: gcc/config/frv/frv.h
===================================================================
--- gcc/config/frv/frv.h        (revision 173012)
+++ gcc/config/frv/frv.h        (working copy)
@@ -864,14 +864,9 @@
   FDPIC_CALL_REGS,
   SPR_REGS,
   QUAD_ACC_REGS,
-  EVEN_ACC_REGS,
-  ACC_REGS,
   ACCG_REGS,
   QUAD_FPR_REGS,
-  FEVEN_REGS,
-  FPR_REGS,
   QUAD_REGS,
-  EVEN_REGS,
   GPR_REGS,
   ALL_REGS,
   LIM_REG_CLASSES
@@ -904,14 +899,9 @@
    "FDPIC_CALL_REGS",                                                  \
    "SPR_REGS",                                                         \
    "QUAD_ACC_REGS",                                                    \
-   "EVEN_ACC_REGS",                                                    \
-   "ACC_REGS",                                                         \
    "ACCG_REGS",                                                                
\
    "QUAD_FPR_REGS",                                                    \
-   "FEVEN_REGS",                                                       \
-   "FPR_REGS",                                                         \
    "QUAD_REGS",                                                                
\
-   "EVEN_REGS",                                                                
\
    "GPR_REGS",                                                         \
    "ALL_REGS"                                                          \
 }
@@ -945,18 +935,19 @@
   { 0x0000c000,0x00000000,0x00000000,0x00000000,0x00000000,0x0}, /* 
FDPIC_CALL_REGS */\
   { 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1e00}, /* 
SPR_REGS */\
   { 0x00000000,0x00000000,0x00000000,0x00000000,0x0fff0000,0x0}, /* QUAD_ACC 
*/\
-  { 0x00000000,0x00000000,0x00000000,0x00000000,0x0fff0000,0x0}, /* EVEN_ACC 
*/\
-  { 0x00000000,0x00000000,0x00000000,0x00000000,0x0fff0000,0x0}, /* ACC_REGS 
*/\
   { 0x00000000,0x00000000,0x00000000,0x00000000,0xf0000000,0xff}, /* 
ACCG_REGS*/\
   { 0x00000000,0x00000000,0xffffffff,0xffffffff,0x00000000,0x0}, /* QUAD_FPR 
*/\
-  { 0x00000000,0x00000000,0xffffffff,0xffffffff,0x00000000,0x0}, /* 
FEVEN_REG*/\
-  { 0x00000000,0x00000000,0xffffffff,0xffffffff,0x00000000,0x0}, /* FPR_REGS 
*/\
   { 0x0ffffffc,0xffffffff,0x00000000,0x00000000,0x00000000,0x0}, /* 
QUAD_REGS*/\
-  { 0xfffffffc,0xffffffff,0x00000000,0x00000000,0x00000000,0x0}, /* 
EVEN_REGS*/\
   { 0xffffffff,0xffffffff,0x00000000,0x00000000,0x00000000,0x100}, /* GPR_REGS 
*/\
   { 0xffffffff,0xffffffff,0xffffffff,0xffffffff,0xffffffff,0x1fff}, /* 
ALL_REGS */\
 }
 
+#define EVEN_ACC_REGS   QUAD_ACC_REGS
+#define ACC_REGS        QUAD_ACC_REGS
+#define FEVEN_REGS      QUAD_FPR_REGS
+#define FPR_REGS        QUAD_FPR_REGS
+#define EVEN_REGS       QUAD_REGS
+
 /* A C expression whose value is a register class containing hard register
    REGNO.  In general there is more than one such class; choose a class which
    is "minimal", meaning that no smaller class also contains the register.  */
Index: gcc/config/frv/frv.c
===================================================================
--- gcc/config/frv/frv.c        (revision 173012)
+++ gcc/config/frv/frv.c        (working copy)
@@ -6371,7 +6371,6 @@
       /* Accumulators/Accumulator guard registers need to go through floating
          point registers.  */
     case QUAD_REGS:
-    case EVEN_REGS:
     case GPR_REGS:
       ret = NO_REGS;
       if (x && GET_CODE (x) == REG)
@@ -6385,8 +6384,6 @@
 
       /* Nonzero constants should be loaded into an FPR through a GPR.  */
     case QUAD_FPR_REGS:
-    case FEVEN_REGS:
-    case FPR_REGS:
       if (x && CONSTANT_P (x) && !ZERO_P (x))
        ret = GPR_REGS;
       else
@@ -6406,8 +6403,6 @@
       break;
 
       /* The accumulators need fpr registers.  */
-    case ACC_REGS:
-    case EVEN_ACC_REGS:
     case QUAD_ACC_REGS:
     case ACCG_REGS:
       ret = FPR_REGS;
@@ -6481,8 +6476,6 @@
     case LR_REG:
     case SPR_REGS:
     case QUAD_ACC_REGS:
-    case EVEN_ACC_REGS:
-    case ACC_REGS:
     case ACCG_REGS:
       return true;
     }
@@ -6842,19 +6835,16 @@
       break;
 
     case QUAD_REGS:
-    case EVEN_REGS:
     case GPR_REGS:
       switch (to)
        {
        default:
          break;
 
-       case QUAD_REGS:
-       case EVEN_REGS:
+       case QUAD_REGS: 
        case GPR_REGS:
          return LOW_COST;
 
-       case FEVEN_REGS:
        case FPR_REGS:
          return LOW_COST;
 
@@ -6864,24 +6854,19 @@
          return LOW_COST;
        }
 
-    case FEVEN_REGS:
-    case FPR_REGS:
+    case QUAD_FPR_REGS:
       switch (to)
        {
        default:
          break;
 
        case QUAD_REGS:
-       case EVEN_REGS:
        case GPR_REGS:
-       case ACC_REGS:
-       case EVEN_ACC_REGS:
        case QUAD_ACC_REGS:
        case ACCG_REGS:
          return MEDIUM_COST;
 
-       case FEVEN_REGS:
-       case FPR_REGS:
+       case QUAD_FPR_REGS:
          return LOW_COST;
        }
 
@@ -6894,13 +6879,10 @@
          break;
 
        case QUAD_REGS:
-       case EVEN_REGS:
        case GPR_REGS:
          return MEDIUM_COST;
        }
 
-    case ACC_REGS:
-    case EVEN_ACC_REGS:
     case QUAD_ACC_REGS:
     case ACCG_REGS:
       switch (to)
@@ -6908,8 +6890,7 @@
        default:
          break;
 
-       case FEVEN_REGS:
-       case FPR_REGS:
+       case QUAD_FPR_REGS:
          return MEDIUM_COST;
 
        }

Reply via email to