1 /* PR middle-end/26300 */
2 
3 struct S
4 {
5   char c;
6   struct S *d;
7   struct S *e;
8 };
9 extern struct S *u, *v;
10 extern void fn1 (struct S *) __attribute__ ((noreturn));
11 void fn2 (struct S *);
12 
13 static inline struct S *
fn3(struct S * x)14 fn3 (struct S *x)
15 {
16   if (x->c != 6)
17     fn1 (0);
18   return (struct S *) x;
19 }
20 
21 static inline int
fn4(struct S * x)22 fn4 (struct S *x)
23 {
24   if (x != u)
25     return 3;
26   fn2 (x);
27   return 0;
28 }
29 
30 int
test(struct S * x)31 test (struct S *x)
32 {
33   struct S *r;
34   int m = 0;
35 
36   for (r = x; r != v; r = (fn3 (r)->d))
37     if (r->c != 6)
38       fn1 (x);
39     else
40       m |= 1 << (fn4 (fn3 (r)->e) - 1);
41   return m;
42 }
43