1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -fdump-tree-dce2 -w" } */
       3  
       4  /* The arithmetic using usecount should be gone.  */
       5  /* { dg-final { scan-tree-dump-times "usecount_\[0-9\]+ = usecount_\[0-9\]+ . 1;" 0 "dce2"} } */
       6  
       7  typedef union tree_node *tree;
       8  typedef union gimple_statement_d *gimple;
       9  extern const int tree_code_type[];
      10  union tree_node
      11  {
      12    int code:16;
      13  };
      14  typedef struct immediate_use_iterator_d
      15  {
      16  }
      17  imm_use_iterator;
      18  void
      19  insert_debug_temp_for_var_def (gimple stmt)
      20  {
      21    gimple def_stmt = ((void *) 0);
      22    int usecount = 0;
      23    tree value = ((void *) 0);
      24    for (; arf ();)
      25      {
      26        if (!gimple_debug_bind_p (stmt))
      27          continue;
      28        if (usecount++)
      29          break;
      30        unsigned char no_value = 0;
      31        if (!gimple_bb (def_stmt))
      32          no_value = 1;
      33        if (!no_value)
      34          value = gimple_assign_rhs_to_tree ();
      35      }
      36    if (value)
      37      {
      38        if ((tree_code_type[(int) (((value)->code))] == 42)
      39            || (usecount == 1 && (is_gimple_min_invariant (value))))
      40          value = unshare_expr (value);
      41      }
      42  }
      43  
      44