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  }