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