1  /* { dg-do compile } */
       2  /* { dg-options "-O1 -fdump-tree-dom2 -std=gnu89" } */
       3                                                                                  
       4  struct die_struct;
       5  typedef struct die_struct *dw_die_ref;
       6  typedef struct dw_loc_list_struct *dw_loc_list_ref;
       7  enum dw_val_class
       8  {
       9    dw_val_class_loc_list,
      10  };
      11  typedef struct dw_val_struct
      12  {
      13    enum dw_val_class val_class;
      14    union dw_val_struct_union
      15      {
      16        dw_loc_list_ref val_loc_list;
      17      }
      18    v;
      19  }
      20  dw_val_node;
      21  typedef struct dw_attr_struct *dw_attr_ref;
      22  typedef struct dw_attr_struct
      23  {
      24    dw_val_node dw_attr_val;
      25  }
      26  dw_attr_node;
      27  
      28  extern __inline__ enum dw_val_class
      29  AT_class (a)
      30       dw_attr_ref a;
      31  {
      32    return a->dw_attr_val.val_class;
      33  }
      34  
      35  extern __inline__ dw_loc_list_ref
      36  AT_loc_list (a)
      37       dw_attr_ref a;
      38  {
      39    if (AT_class (a) == dw_val_class_loc_list)
      40      return a->dw_attr_val.v.val_loc_list;
      41  }
      42  
      43  void
      44  output_location_lists (die)
      45       dw_die_ref die;
      46  {
      47    dw_die_ref c;
      48    dw_attr_ref d_attr;
      49      if (AT_class (d_attr) == dw_val_class_loc_list)
      50        output_loc_list (AT_loc_list (d_attr));
      51  }
      52  
      53  /* There should be exactly one IF conditional, in output_location_lists.  */
      54  /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */