1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -Wuninitialized" } */
       3  
       4  typedef union tree_node *tree;
       5  
       6  struct tree_common
       7  {
       8    tree chain;
       9  };
      10  
      11  struct tree_decl
      12  {
      13    struct tree_common common;
      14    tree name;
      15  };
      16  
      17  
      18  union tree_node
      19  {
      20    struct tree_common common;
      21    struct tree_decl decl;
      22  };
      23  
      24  int pedantic;
      25  void foo (tree);
      26  void bar1 (tree *);
      27  
      28  void
      29  finish_struct (tree t, tree fieldlist, tree attributes)
      30  {
      31    union tree_node * x;
      32  
      33    if (pedantic)
      34      {
      35        x = fieldlist;
      36        if (x->decl.name == 0)
      37  	{
      38  	  while (x)
      39  	    x = x->common.chain;
      40  	  foo (fieldlist);
      41  	}
      42      }
      43  
      44    x = fieldlist;
      45    if (x)
      46      {
      47        do
      48  	{
      49  	  x = x->common.chain;
      50  	} while (x != 0);
      51      }
      52    
      53    bar1 (&fieldlist);
      54  }