1 /* { dg-do compile } */ 2 /* { dg-options "-O1 -fdump-tree-dom2" } */ 3 4 extern void abort (void); 5 6 union tree_node; 7 typedef union tree_node *tree; 8 enum tree_code 9 { 10 TREE_VEC = 20, 11 }; 12 struct tree_common 13 { 14 int code; 15 }; 16 struct tree_type 17 { 18 tree binfo; 19 }; 20 union tree_node 21 { 22 struct tree_common common; 23 struct tree_type type; 24 }; 25 void record_component_aliases(type)26record_component_aliases (type) 27 tree type; 28 { 29 const tree __z = type->type.binfo; 30 if (type->type.binfo->common.code != TREE_VEC) 31 abort (); 32 33 if (__z->common.code != TREE_VEC) 34 abort (); 35 } 36 37 /* There should be precisely one load of type.binfo. If there is 38 more than one, then the dominator optimizations failed. */ 39 /* { dg-final { scan-tree-dump-times "type\\.binfo" 1 "dom2"} } */ 40 41 /* There should be precisely one load of common.code. If there is 42 more than one, then the dominator optimizations failed. */ 43 /* { dg-final { scan-tree-dump-times "common\\.code" 1 "dom2"} } */ 44 45 /* There should be one IF conditional. */ 46 /* { dg-final { scan-tree-dump-times "if " 1 "dom2"} } */ 47 48