]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix from Dave Korn in case a backend does not declare any define_register_constraints
authorDave Korn <dave.korn.cygwin@gmail.com>
Thu, 30 Apr 2009 21:52:15 +0000 (21:52 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Thu, 30 Apr 2009 21:52:15 +0000 (21:52 +0000)
From-SVN: r147020

gcc/ChangeLog
gcc/genpreds.c
gcc/ira.c

index 2e6fec8d969645b1bcb4087ac8d912b338f2d485..13f45ff7a7305e27a82bf55bf22bf3cdb321e665 100644 (file)
@@ -1,3 +1,11 @@
+2009-04-30  Dave Korn  <dave.korn.cygwin@gmail.com>
+
+       * 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  <espindola@google.com>
 
        * alloc-pool.c (alloc_pool_descriptor): Use an insert_opion value
index 86c799aa1a6b9e2391894bcb6d670b4c46182bdf..5a4e249ceb447c19559c07cbceeec6bbc23f4248 100644 (file)
@@ -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"
index c105d837f83f64f38215d3b2b13568c9ab2554aa..a63351441c5173d71e71bad238ad759fbce8846f 100644 (file)
--- 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)
            {