/* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-dce2 -w" } */ /* The arithmetic using usecount should be gone. */ /* { dg-final { scan-tree-dump-times "usecount_\[0-9\]+ = usecount_\[0-9\]+ . 1;" 0 "dce2"} } */ typedef union tree_node *tree; typedef union gimple_statement_d *gimple; extern const int tree_code_type[]; union tree_node { int code:16; }; typedef struct immediate_use_iterator_d { } imm_use_iterator; void insert_debug_temp_for_var_def (gimple stmt) { gimple def_stmt = ((void *) 0); int usecount = 0; tree value = ((void *) 0); for (; arf ();) { if (!gimple_debug_bind_p (stmt)) continue; if (usecount++) break; unsigned char no_value = 0; if (!gimple_bb (def_stmt)) no_value = 1; if (!no_value) value = gimple_assign_rhs_to_tree (); } if (value) { if ((tree_code_type[(int) (((value)->code))] == 42) || (usecount == 1 && (is_gimple_min_invariant (value)))) value = unshare_expr (value); } }