Viewing file: pr27331.c (1.07 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-options "-O2 -ftree-vectorize" } */
struct funny_match { int this, other; };
typedef struct rtx { int code; } *rtx;
extern rtx recog_operand[]; extern int which_alternative; extern int nalternatives;
int constrain_operands (insn_code_num, strict) int insn_code_num; int strict; { char *constraints[10]; struct funny_match funny_match[10]; register int c; int funny_match_index;
which_alternative = 0;
while (which_alternative < nalternatives) { register int opno; register char *p = constraints[opno]; int lose = 0; funny_match_index = 0;
while (*p && (c = *p++) != ',') funny_match[funny_match_index++].other = c - '0';
if ((((recog_operand[opno])->code) == 12)) lose = 1;
if (!lose) { while (--funny_match_index >= 0) recog_operand[funny_match[funny_match_index].other] = recog_operand[funny_match[funny_match_index].this]; return 1; } which_alternative++; }
if (strict == 0) return constrain_operands (insn_code_num, -1); return 0; }
|