diff options
author | David Edelsohn <dje@gcc.gnu.org> | 1998-10-24 10:19:32 -0400 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 1998-10-24 10:19:32 -0400 |
commit | 7405d9a163d80203515f26eaab5b30f49ebff931 (patch) | |
tree | 28927c2c62e7fb7becd1f824fd97fd482c7d29e2 /gcc/regclass.c | |
parent | c60f1599b1a33d22b79e2888f48643566bd81d34 (diff) | |
download | gcc-7405d9a163d80203515f26eaab5b30f49ebff931.tar.gz |
- update record_reg_classes change to be consistent with
Kenner's change to gcc.
From-SVN: r23275
Diffstat (limited to 'gcc/regclass.c')
-rw-r--r-- | gcc/regclass.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/gcc/regclass.c b/gcc/regclass.c index 8d873f95f5e..ef1dce2bdea 100644 --- a/gcc/regclass.c +++ b/gcc/regclass.c @@ -1200,6 +1200,9 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn) int win = 0; unsigned char c; + /* Initially show we know nothing about the register class. */ + classes[i] = NO_REGS; + /* If this operand has no constraints at all, we can conclude nothing about it since anything is valid. */ @@ -1211,8 +1214,11 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn) continue; } - /* Ascertain modifiers for line and skip any modifiers that might - occur before first constraint. */ + /* 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. We must process + any modifiers for the operand before we can make this test. */ + while (*p == '%' || *p == '=' || *p == '+' || *p == '&') { if (*p == '=') @@ -1223,12 +1229,6 @@ record_reg_classes (n_alts, n_ops, ops, modes, constraints, insn) p++; } - classes[i] = NO_REGS; - - /* 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. */ - if (p[0] >= '0' && p[0] <= '0' + i && (p[1] == ',' || p[1] == 0)) { j = p[0] - '0'; |