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 output_location_lists(die)44output_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"} } */ 55