]> gcc.gnu.org Git - gcc.git/commitdiff
record_reg_classes): When an alternative requires a match...
authorRichard Kenner <kenner@gcc.gnu.org>
Wed, 24 Mar 1993 01:18:04 +0000 (20:18 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Wed, 24 Mar 1993 01:18:04 +0000 (20:18 -0500)
record_reg_classes): When an alternative requires a match, but we do
it with a copy into a register, that alternative wins.

From-SVN: r3862

gcc/regclass.c

index 7c5a25676d1b804cbd2307e762e56da2647f6bb7..5067210920847fef07222fbccf998dad01b395a8 100644 (file)
@@ -957,18 +957,12 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn)
                  if (rtx_equal_p (ops[j], op))
                    ;
 
-                 /* If we can't put the other operand into a register, this
-                    alternative can't be used.  */
-
-                 else if (classes[j] == NO_REGS)
-                   alt_fail = 1;
+                 /* If we can put the other operand into a register, add to
+                    the cost of this alternative the cost to copy this
+                    operand to the register used for the other operand.  */
 
-                 /* Otherwise, add to the cost of this alternative the cost
-                    to copy this operand to the register used for the other
-                    operand.  */
-
-                 else
-                   alt_cost += copy_cost (op, mode, classes[j], 1);
+                 if (classes[j] != NO_REGS)
+                   alt_cost += copy_cost (op, mode, classes[j], 1), win = 1;
                }
              else if (GET_CODE (ops[j]) != REG
                       || REGNO (ops[j]) < FIRST_PSEUDO_REGISTER)
This page took 0.065267 seconds and 5 git commands to generate.