1 /* http://gcc.gnu.org/ml/gcc-patches/2004-02/msg01307.html */
2 
3 typedef struct xdef xdef;
4 struct xdef
5 {
6   char xtyp;
7   xdef *next;
8   int y;
9 };
10 
11 extern void b ();
12 extern void *foo (void *bar);
13 extern void *foo2 (void *bar1, void *bar2);
14 extern void *qwe;
15 
16 static void
c(xdef * xp)17 c (xdef * xp)
18 {
19   b (xp);
20 }
21 static void
a(xdef ** xpp)22 a (xdef ** xpp)
23 {
24   xdef *xp;
25   xp = *xpp;
26 
27   foo (xp);
28   xp = foo2 (xp, qwe);
29   b (xp->next);
30   foo (xp);
31   if (xp->y)
32   {
33     foo (xp);
34     if (xp)
35     {
36       xdef *p = foo2 (xp, qwe);
37       foo2 (xp, p);
38       xp = foo (p);
39     }
40     else
41     {
42       foo2 (foo(*xpp), *xpp);
43     }
44   }
45   *xpp = foo2 (xpp, qwe);
46 }
47 
48 void
b(xdef ** xpp)49 b (xdef ** xpp)
50 {
51   xdef *xp = *xpp;
52   if (!xp)
53     return;
54   if (xp->xtyp == 0)
55     a (xpp);
56   c (xp);
57 }
58