From: Dave Korn Date: Thu, 30 Apr 2009 21:52:15 +0000 (+0000) Subject: Fix from Dave Korn in case a backend does not declare any define_register_constraints X-Git-Tag: releases/gcc-4.5.0~5983 X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fgcc.git;a=commitdiff_plain;h=b65d6744926a7e8b200065f75b1fb0c0359a9949 Fix from Dave Korn in case a backend does not declare any define_register_constraints From-SVN: r147020 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2e6fec8d9696..13f45ff7a730 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2009-04-30 Dave Korn + + * ira.c (setup_cover_and_important_classes): Use safe macro + REG_CLASS_FOR_CONSTRAINT instead of calling regclass_for_constraint + directly. + * genpreds.c (write_tm_preds_h): Output suitable definition of + REG_CLASS_FOR_CONSTRAINT. + 2009-04-30 Rafael Avila de Espindola * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value diff --git a/gcc/genpreds.c b/gcc/genpreds.c index 86c799aa1a6b..5a4e249ceb44 100644 --- a/gcc/genpreds.c +++ b/gcc/genpreds.c @@ -1280,9 +1280,13 @@ write_tm_preds_h (void) puts ("extern enum reg_class regclass_for_constraint " "(enum constraint_num);\n" "#define REG_CLASS_FROM_CONSTRAINT(c_,s_) \\\n" - " regclass_for_constraint (lookup_constraint (s_))\n"); + " regclass_for_constraint (lookup_constraint (s_))\n" + "#define REG_CLASS_FOR_CONSTRAINT(x_) \\\n" + " regclass_for_constraint (x_)\n"); else - puts ("#define REG_CLASS_FROM_CONSTRAINT(c_,s_) NO_REGS"); + puts ("#define REG_CLASS_FROM_CONSTRAINT(c_,s_) NO_REGS\n" + "#define REG_CLASS_FOR_CONSTRAINT(x_) \\\n" + " NO_REGS\n"); if (have_const_int_constraints) puts ("extern bool insn_const_int_ok_for_constraint " "(HOST_WIDE_INT, enum constraint_num);\n" diff --git a/gcc/ira.c b/gcc/ira.c index c105d837f83f..a63351441c51 100644 --- a/gcc/ira.c +++ b/gcc/ira.c @@ -756,7 +756,7 @@ setup_cover_and_important_classes (void) continue; #ifdef CONSTRAINT_NUM_DEFINED_P for (j = 0; j < CONSTRAINT__LIMIT; j++) - if ((int) regclass_for_constraint ((enum constraint_num) j) == i) + if ((int) REG_CLASS_FOR_CONSTRAINT ((enum constraint_num) j) == i) break; if (j < CONSTRAINT__LIMIT) {