1 /* PR tree-optimization/49419 */
2
3 extern void abort (void);
4
5 struct S { int w, x, y; } *t;
6
7 int
foo(int n,int f,int * s,int m)8 foo (int n, int f, int *s, int m)
9 {
10 int x, i, a;
11 if (n == -1)
12 return 0;
13 for (x = n, i = 0; t[x].w == f && i < m; i++)
14 x = t[x].x;
15 if (i == m)
16 abort ();
17 a = i + 1;
18 for (x = n; i > 0; i--)
19 {
20 s[i] = t[x].y;
21 x = t[x].x;
22 }
23 s[0] = x;
24 return a;
25 }
26
27 int
main(void)28 main (void)
29 {
30 int s[3], i;
31 struct S buf[3] = { { 1, 1, 2 }, { 0, 0, 0 }, { 0, 0, 0 } };
32 t = buf;
33 if (foo (0, 1, s, 3) != 2)
34 abort ();
35 if (s[0] != 1 || s[1] != 2)
36 abort ();
37 return 0;
38 }
39