text: /* http://gcc.gnu.org/ml/gcc-patches/2004-02/msg01307.html */
  
  typedef struct xdef xdef;
  struct xdef
  {
    char xtyp;
    xdef *next;
    int y;
  };
  
  extern void b ();
  extern void *foo (void *bar);
  extern void *foo2 (void *bar1, void *bar2);
  extern void *qwe;
  
  static void
  c (xdef * xp)
  {
    b (xp);
  }
  static void
  a (xdef ** xpp)
  {
    xdef *xp;
    xp = *xpp;
  
    foo (xp);
    xp = foo2 (xp, qwe);
    b (xp->next);
    foo (xp);
    if (xp->y)
    {
      foo (xp);
      if (xp)
      {
        xdef *p = foo2 (xp, qwe);
        foo2 (xp, p);
        xp = foo (p);
      }
      else
      {
        foo2 (foo(*xpp), *xpp);
      }
    }
    *xpp = foo2 (xpp, qwe);
  }
  
  void
  b (xdef ** xpp)
  {
    xdef *xp = *xpp;
    if (!xp)
      return;
    if (xp->xtyp == 0)
      a (xpp);
    c (xp);
  }
  