1 /* { dg-do compile } */ 2 /* { dg-options "-O2 -fdump-tree-vrp1" } */ 3 4 extern void abort (void); 5 6 union tree_node; 7 typedef union tree_node *tree; 8 struct tree_common 9 { 10 int code; 11 }; 12 struct tree_list 13 { 14 tree purpose; 15 }; 16 union tree_node 17 { 18 struct tree_common common; 19 struct tree_list list; 20 }; 21 void c_simplify_stmt (tree *); 22 void simplify_condition(cond_p)23simplify_condition (cond_p) 24 tree *cond_p; 25 { 26 tree decl; 27 tree cond = *cond_p; 28 if (cond->common.code != 42) 29 abort (); 30 decl = cond->list.purpose; 31 if (cond->common.code != 42) 32 abort (); 33 c_simplify_stmt (&decl); 34 } 35 36 /* There should be exactly one IF conditional. */ 37 /* { dg-final { scan-tree-dump-times "if " 1 "vrp1" } } */ 38