summaryrefslogtreecommitdiffstats
path: root/gcc/local-alloc.c
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-11 07:07:30 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2001-10-11 07:07:30 +0000
commit2c7f203c73818b36bcf6d49d7c0b429eab5a7ff9 (patch)
tree65279fa1cd98240f2ba4d2902ef69c88fa458bd8 /gcc/local-alloc.c
parentd0cf8d386017196fb866c5bccab1640e0f9f876d (diff)
downloadppe42-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.c11
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;
OpenPOWER on IntegriCloud