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
insert_debug_temp_for_var_def(gimple stmt)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 
45