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