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
      26  record_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