aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-09-15 04:47:08 +0000
committerRichard Stallman <rms@gnu.org>1992-09-15 04:47:08 +0000
commit347099d6ef97a689c52d883c5547f024a719da24 (patch)
treebf04555258e7ee4ae179b9c4a850415ef4bb27a5
parent69c3f3434a856266240ac45b4f66624726cbf9e7 (diff)
downloadgcc-347099d6ef97a689c52d883c5547f024a719da24.zip
gcc-347099d6ef97a689c52d883c5547f024a719da24.tar.gz
gcc-347099d6ef97a689c52d883c5547f024a719da24.tar.bz2
(record_reg_classes): Ignore leading % when examining constraint.
Don't bypass usual cost computation when a pseudo "matches" a non-pseudo in matching operands. From-SVN: r2123
-rw-r--r--gcc/regclass.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/regclass.c b/gcc/regclass.c
index 343d303..74b2d7a 100644
--- a/gcc/regclass.c
+++ b/gcc/regclass.c
@@ -910,6 +910,9 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn)
continue;
}
+ if (*p == '%')
+ p++;
+
/* If this alternative is only relevant when this operand
matches a previous operand, we do different things depending
on whether this operand is a pseudo-reg or not. */
@@ -967,9 +970,11 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn)
this_op_costs[i] = this_op_costs[j];
if (! find_reg_note (insn, REG_DEAD, op))
alt_cost += 2;
- }
- continue;
+ /* This is in place of ordinary cost computation
+ for this operand. */
+ continue;
+ }
}
/* Scan all the constraint letters. See if the operand matches