111
|
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
|
|
17 c (xdef * xp)
|
|
18 {
|
|
19 b (xp);
|
|
20 }
|
|
21 static void
|
|
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
|
|
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 }
|