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
      23  simplify_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" { xfail *-*-* } } } */