2014-07-29 Ed Smith-Rowland <3dw4rd@verizon.net>
[official-gcc.git] / gcc / testsuite / gcc.dg / pr27331.c
blob9b5c71e843769d25f5ce74312c1eec5b0abed4de
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -ftree-vectorize" } */
4 struct funny_match
6 int this, other;
7 };
9 typedef struct rtx {
10 int code;
11 } *rtx;
13 extern rtx recog_operand[];
14 extern int which_alternative;
15 extern int nalternatives;
17 int
18 constrain_operands (insn_code_num, strict)
19 int insn_code_num;
20 int strict;
22 char *constraints[10];
23 struct funny_match funny_match[10];
24 register int c;
25 int funny_match_index;
27 which_alternative = 0;
29 while (which_alternative < nalternatives)
31 register int opno;
32 register char *p = constraints[opno];
33 int lose = 0;
34 funny_match_index = 0;
36 while (*p && (c = *p++) != ',')
37 funny_match[funny_match_index++].other = c - '0';
39 if ((((recog_operand[opno])->code) == 12))
40 lose = 1;
42 if (!lose)
44 while (--funny_match_index >= 0)
45 recog_operand[funny_match[funny_match_index].other]
46 = recog_operand[funny_match[funny_match_index].this];
47 return 1;
49 which_alternative++;
52 if (strict == 0)
53 return constrain_operands (insn_code_num, -1);
54 return 0;