This patch solves http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49154 for CRIS. The problem was in that the pressure classes did not contain SRP register and the assert failed.

OK to commit?

2011-05-25  Vladimir Makarov <vmaka...@redhat.com>

        PR rtl-optimization/49154
        * config/cris/cris.h (reg_class, REG_CLASS_NAMES)
        (REG_CLASS_CONTENTS, REGNO_REG_CLASS): Add class SRP_REGS.

Index: config/cris/cris.h
===================================================================
--- config/cris/cris.h  (revision 174219)
+++ config/cris/cris.h  (working copy)
@@ -498,7 +498,7 @@ extern int cris_cpu_version;
 enum reg_class
   {
     NO_REGS,
-    ACR_REGS, MOF_REGS, CC0_REGS, SPECIAL_REGS,
+    ACR_REGS, SRP_REGS, MOF_REGS, CC0_REGS, SPECIAL_REGS,
     SPEC_ACR_REGS, GENNONACR_REGS,
     SPEC_GENNONACR_REGS, GENERAL_REGS,
     ALL_REGS,
@@ -507,10 +507,10 @@ enum reg_class
 
 #define N_REG_CLASSES (int) LIM_REG_CLASSES
 
-#define REG_CLASS_NAMES                                                \
-  {"NO_REGS",                                                  \
-   "ACR_REGS", "MOF_REGS", "CC0_REGS", "SPECIAL_REGS",         \
-   "SPEC_ACR_REGS", "GENNONACR_REGS", "SPEC_GENNONACR_REGS",   \
+#define REG_CLASS_NAMES                                                        
\
+  {"NO_REGS",                                                          \
+   "ACR_REGS", "SRP_REGS", "MOF_REGS", "CC0_REGS", "SPECIAL_REGS",     \
+   "SPEC_ACR_REGS", "GENNONACR_REGS", "SPEC_GENNONACR_REGS",           \
    "GENERAL_REGS", "ALL_REGS"}
 
 #define CRIS_SPECIAL_REGS_CONTENTS                                     \
@@ -521,6 +521,7 @@ enum reg_class
   {                                            \
    {0},                                                \
    {1 << CRIS_ACR_REGNUM},                     \
+   {1 << CRIS_SRP_REGNUM},                     \
    {1 << CRIS_MOF_REGNUM},                     \
    {1 << CRIS_CC0_REGNUM},                     \
    {CRIS_SPECIAL_REGS_CONTENTS},               \
@@ -540,7 +541,7 @@ enum reg_class
   ((REGNO) == CRIS_ACR_REGNUM ? ACR_REGS :     \
    (REGNO) == CRIS_MOF_REGNUM ? MOF_REGS :     \
    (REGNO) == CRIS_CC0_REGNUM ? CC0_REGS :     \
-   (REGNO) == CRIS_SRP_REGNUM ? SPECIAL_REGS : \
+   (REGNO) == CRIS_SRP_REGNUM ? SRP_REGS :     \
    GENERAL_REGS)
 
 #define BASE_REG_CLASS GENERAL_REGS

Reply via email to