diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-11 07:07:30 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-10-11 07:07:30 +0000 |
commit | 2c7f203c73818b36bcf6d49d7c0b429eab5a7ff9 (patch) | |
tree | 65279fa1cd98240f2ba4d2902ef69c88fa458bd8 /gcc/local-alloc.c | |
parent | d0cf8d386017196fb866c5bccab1640e0f9f876d (diff) | |
download | ppe42-gcc-2c7f203c73818b36bcf6d49d7c0b429eab5a7ff9.tar.gz ppe42-gcc-2c7f203c73818b36bcf6d49d7c0b429eab5a7ff9.zip |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@46179 138bc75d-0d04-0410-961f-82ee72b054a4
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 2637b7e78a1..22d7d48b528 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; |