From: meissner 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-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=520196acbe531ccadf086d8eec034a1b1751ef63 Fix from Dave Korn in case a backend does not declare any define_register_constraints git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147020 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2e6fec8d969..13f45ff7a73 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 86c799aa1a6..5a4e249ceb4 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 c105d837f83..a63351441c5 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) {