diff options
author | Richard Stallman <rms@gnu.org> | 1992-09-15 04:47:08 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-09-15 04:47:08 +0000 |
commit | 347099d6ef97a689c52d883c5547f024a719da24 (patch) | |
tree | bf04555258e7ee4ae179b9c4a850415ef4bb27a5 | |
parent | 69c3f3434a856266240ac45b4f66624726cbf9e7 (diff) | |
download | gcc-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.c | 9 |
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 |