OSDN Git Service

PR preprocessor/30805:
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / pr27331.c
1 /* { dg-do compile } */
2 /* { dg-options "-O2 -ftree-vectorize" } */
3
4 struct funny_match
5 {
6   int this, other;
7 };
8
9 typedef struct rtx {
10     int code;
11 } *rtx;
12
13 extern rtx recog_operand[];
14 extern int which_alternative;
15 extern int nalternatives;
16
17 int
18 constrain_operands (insn_code_num, strict)
19      int insn_code_num;
20      int strict;
21 {
22   char *constraints[10];
23   struct funny_match funny_match[10];
24   register int c;
25   int funny_match_index;
26
27   which_alternative = 0;
28
29   while (which_alternative < nalternatives)
30     {
31       register int opno;
32       register char *p = constraints[opno];
33       int lose = 0;
34       funny_match_index = 0;
35
36       while (*p && (c = *p++) != ',')
37         funny_match[funny_match_index++].other = c - '0';
38
39       if ((((recog_operand[opno])->code) == 12))
40         lose = 1;
41
42       if (!lose)
43         {
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;
48         }
49       which_alternative++;
50     }
51
52   if (strict == 0)
53     return constrain_operands (insn_code_num, -1);
54   return 0;
55 }
56