diff options
author | Richard Henderson <rth@redhat.com> | 2001-10-11 00:07:30 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2001-10-11 00:07:30 -0700 |
commit | 84b7230235972947f92045e6281d2a18099b415e (patch) | |
tree | 65279fa1cd98240f2ba4d2902ef69c88fa458bd8 /gcc/local-alloc.c | |
parent | 592188a538c1993640b27f0788f382e282dddbb6 (diff) | |
download | gcc-84b7230235972947f92045e6281d2a18099b415e.zip gcc-84b7230235972947f92045e6281d2a18099b415e.tar.gz gcc-84b7230235972947f92045e6281d2a18099b415e.tar.bz2 |
c-parse.in (asm_operand): Allow named operands.
* c-parse.in (asm_operand): Allow named operands.
* genconfig.c (max_recog_operands): Set to 29.
* local-alloc.c (requires_inout): Skip multiple digits.
* recog.c (asm_operand_ok): Likewise.
(preprocess_constraints): Use strtoul for matching constraints.
(constrain_operands): Likewise.
* regmove.c (find_matches): Likewise.
* reload.c (find_reloads): Likewise.
* stmt.c (parse_output_constraint): Don't reject in-out
constraint on operands > 9. Reject '[' in constraint.
(expand_asm_operands): Handle named operands. Use strtoul
for matching constraints.
(check_operand_nalternatives): Split out from expand_asm_operands.
(check_unique_operand_names): New.
(resolve_operand_names, resolve_operand_name_1): New.
* doc/extend.texi (Extended Asm): Document named operands.
* doc/md.texi (Simple Constraints): Document matching constraints
on operands > 9.
* parse.y (asm_operand): Allow named operands.
* semantics.c (finish_asm_stmt): Tweek for changed location
of the operand constrant.
From-SVN: r46179
Diffstat (limited to 'gcc/local-alloc.c')
-rw-r--r-- | gcc/local-alloc.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c index 2637b7e..22d7d48 100644 --- a/gcc/local-alloc.c +++ b/gcc/local-alloc.c @@ -1302,7 +1302,7 @@ block_alloc (b) for (i = 1; i < recog_data.n_operands; i++) { const char *p = recog_data.constraints[i]; - int this_match = (requires_inout (p)); + int this_match = requires_inout (p); n_matching_alts += this_match; if (this_match == recog_data.n_alternatives) @@ -2409,8 +2409,6 @@ requires_inout (p) case '=': case '+': case '?': case '#': case '&': case '!': case '*': case '%': - case '1': case '2': case '3': case '4': case '5': - case '6': case '7': case '8': case '9': case 'm': case '<': case '>': case 'V': case 'o': case 'E': case 'F': case 'G': case 'H': case 's': case 'i': case 'n': @@ -2431,6 +2429,13 @@ requires_inout (p) found_zero = 1; break; + case '1': case '2': case '3': case '4': case '5': + case '6': case '7': case '8': case '9': + /* Skip the balance of the matching constraint. */ + while (*p >= '0' && *p <= '9') + p++; + break; + default: if (REG_CLASS_FROM_LETTER (c) == NO_REGS) break; |