diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 03529551e40..461683783f5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,21 @@ +2011-10-06 Michael Matz + + * tree-flow.h (get_var_ann): Don't declare. + * tree-flow-inline.h (get_var_ann): Remove. + (set_is_used): Use var_ann, not get_var_ann. + * tree-dfa.c (add_referenced_var): Inline body of get_var_ann. + * tree-profile.c (gimple_gen_edge_profiler): Call + find_referenced_var_in. + (gimple_gen_interval_profiler): Ditto. + (gimple_gen_pow2_profiler): Ditto. + (gimple_gen_one_value_profiler): Ditto. + (gimple_gen_average_profiler): Ditto. + (gimple_gen_ior_profiler): Ditto. + (gimple_gen_ic_profiler): Ditto plus call add_referenced_var. + (gimple_gen_ic_func_profiler): Call add_referenced_var. + * tree-mudflap.c (execute_mudflap_function_ops): Call + add_referenced_var. + 2011-10-06 Jakub Jelinek * tree-vect-patterns.c (vect_handle_widen_mult_by_const): For lhs diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 62d4bfe3fb8..0ecec816b6a 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -580,8 +580,9 @@ set_default_def (tree var, tree def) bool add_referenced_var (tree var) { - get_var_ann (var); gcc_assert (DECL_P (var)); + if (!*DECL_VAR_ANN_PTR (var)) + create_var_ann (var); /* Insert VAR into the referenced_vars hash table if it isn't present. */ if (referenced_var_check_and_insert (var)) diff --git a/gcc/tree-flow-inline.h b/gcc/tree-flow-inline.h index b9c5e16e972..56edae9fef3 100644 --- a/gcc/tree-flow-inline.h +++ b/gcc/tree-flow-inline.h @@ -145,16 +145,6 @@ var_ann (const_tree t) return p ? *p : NULL; } -/* Return the variable annotation for T, which must be a _DECL node. - Create the variable annotation if it doesn't exist. */ -static inline var_ann_t -get_var_ann (tree var) -{ - var_ann_t *p = DECL_VAR_ANN_PTR (var); - gcc_checking_assert (p); - return *p ? *p : create_var_ann (var); -} - /* Get the number of the next statement uid to be allocated. */ static inline unsigned int gimple_stmt_max_uid (struct function *fn) @@ -568,7 +558,7 @@ phi_arg_index_from_use (use_operand_p use) static inline void set_is_used (tree var) { - var_ann_t ann = get_var_ann (var); + var_ann_t ann = var_ann (var); ann->used = true; } diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index d4bf54cbe69..1152b7d0de4 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -278,7 +278,6 @@ typedef struct immediate_use_iterator_d typedef struct var_ann_d *var_ann_t; static inline var_ann_t var_ann (const_tree); -static inline var_ann_t get_var_ann (tree); static inline void update_stmt (gimple); static inline int get_lineno (const_gimple); diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c index f9b45994917..102f2ff3075 100644 --- a/gcc/tree-mudflap.c +++ b/gcc/tree-mudflap.c @@ -418,6 +418,10 @@ execute_mudflap_function_ops (void) push_gimplify_context (&gctx); + add_referenced_var (mf_cache_array_decl); + add_referenced_var (mf_cache_shift_decl); + add_referenced_var (mf_cache_mask_decl); + /* In multithreaded mode, don't cache the lookup cache parameters. */ if (! flag_mudflap_threads) mf_decl_cache_locals (); diff --git a/gcc/tree-profile.c b/gcc/tree-profile.c index 98f7d678792..c56650c066e 100644 --- a/gcc/tree-profile.c +++ b/gcc/tree-profile.c @@ -224,6 +224,7 @@ gimple_gen_edge_profiler (int edgeno, edge e) one = build_int_cst (gcov_type_node, 1); stmt1 = gimple_build_assign (gcov_type_tmp_var, ref); gimple_assign_set_lhs (stmt1, make_ssa_name (gcov_type_tmp_var, stmt1)); + find_referenced_vars_in (stmt1); stmt2 = gimple_build_assign_with_ops (PLUS_EXPR, gcov_type_tmp_var, gimple_assign_lhs (stmt1), one); gimple_assign_set_lhs (stmt2, make_ssa_name (gcov_type_tmp_var, stmt2)); @@ -270,6 +271,7 @@ gimple_gen_interval_profiler (histogram_value value, unsigned tag, unsigned base val = prepare_instrumented_value (&gsi, value); call = gimple_build_call (tree_interval_profiler_fn, 4, ref_ptr, val, start, steps); + find_referenced_vars_in (call); gsi_insert_before (&gsi, call, GSI_NEW_STMT); } @@ -290,6 +292,7 @@ gimple_gen_pow2_profiler (histogram_value value, unsigned tag, unsigned base) true, NULL_TREE, true, GSI_SAME_STMT); val = prepare_instrumented_value (&gsi, value); call = gimple_build_call (tree_pow2_profiler_fn, 2, ref_ptr, val); + find_referenced_vars_in (call); gsi_insert_before (&gsi, call, GSI_NEW_STMT); } @@ -310,6 +313,7 @@ gimple_gen_one_value_profiler (histogram_value value, unsigned tag, unsigned bas true, NULL_TREE, true, GSI_SAME_STMT); val = prepare_instrumented_value (&gsi, value); call = gimple_build_call (tree_one_value_profiler_fn, 2, ref_ptr, val); + find_referenced_vars_in (call); gsi_insert_before (&gsi, call, GSI_NEW_STMT); } @@ -340,9 +344,12 @@ gimple_gen_ic_profiler (histogram_value value, unsigned tag, unsigned base) tmp1 = create_tmp_reg (ptr_void, "PROF"); stmt1 = gimple_build_assign (ic_gcov_type_ptr_var, ref_ptr); + find_referenced_vars_in (stmt1); stmt2 = gimple_build_assign (tmp1, unshare_expr (value->hvalue.value)); gimple_assign_set_lhs (stmt2, make_ssa_name (tmp1, stmt2)); + find_referenced_vars_in (stmt2); stmt3 = gimple_build_assign (ic_void_ptr_var, gimple_assign_lhs (stmt2)); + add_referenced_var (ic_void_ptr_var); gsi_insert_before (&gsi, stmt1, GSI_SAME_STMT); gsi_insert_before (&gsi, stmt2, GSI_SAME_STMT); @@ -378,9 +385,11 @@ gimple_gen_ic_func_profiler (void) counter_ptr = force_gimple_operand_gsi (&gsi, ic_gcov_type_ptr_var, true, NULL_TREE, true, GSI_SAME_STMT); + add_referenced_var (ic_gcov_type_ptr_var); ptr_var = force_gimple_operand_gsi (&gsi, ic_void_ptr_var, true, NULL_TREE, true, GSI_SAME_STMT); + add_referenced_var (ic_void_ptr_var); tree_uid = build_int_cst (gcov_type_node, current_function_funcdef_no); stmt1 = gimple_build_call (tree_indirect_call_profiler_fn, 4, counter_ptr, tree_uid, cur_func, ptr_var); @@ -429,6 +438,7 @@ gimple_gen_average_profiler (histogram_value value, unsigned tag, unsigned base) true, GSI_SAME_STMT); val = prepare_instrumented_value (&gsi, value); call = gimple_build_call (tree_average_profiler_fn, 2, ref_ptr, val); + find_referenced_vars_in (call); gsi_insert_before (&gsi, call, GSI_NEW_STMT); } @@ -449,6 +459,7 @@ gimple_gen_ior_profiler (histogram_value value, unsigned tag, unsigned base) true, NULL_TREE, true, GSI_SAME_STMT); val = prepare_instrumented_value (&gsi, value); call = gimple_build_call (tree_ior_profiler_fn, 2, ref_ptr, val); + find_referenced_vars_in (call); gsi_insert_before (&gsi, call, GSI_NEW_STMT); }