From 134f0957100ce9bb6fb123dfcafd4bf743af2711 Mon Sep 17 00:00:00 2001 From: rguenth Date: Tue, 29 May 2012 12:48:34 +0000 Subject: [PATCH] 2012-05-29 Richard Guenther * tree-dfa.c (find_vars_r): Do not call add_referenced_vars for globals. (add_referenced_var_1): Re-organize. Assert we are not called for globals. (remove_referenced_var): Likewise. * varpool.c (add_new_static_var): Use create_tmp_var_raw. * tree-mudflap.c (execute_mudflap_function_ops): Do not call add_referenced_var on globals. * matrix-reorg.c (transform_access_sites): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187955 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 12 ++++++++++++ gcc/matrix-reorg.c | 1 - gcc/tree-dfa.c | 45 ++++++++++++++++++++++++++------------------- gcc/tree-mudflap.c | 4 ---- gcc/varpool.c | 2 +- 5 files changed, 39 insertions(+), 25 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7bc112177a..6099b8f91e9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,15 @@ +2012-05-29 Richard Guenther + + * tree-dfa.c (find_vars_r): Do not call add_referenced_vars + for globals. + (add_referenced_var_1): Re-organize. Assert we are not + called for globals. + (remove_referenced_var): Likewise. + * varpool.c (add_new_static_var): Use create_tmp_var_raw. + * tree-mudflap.c (execute_mudflap_function_ops): Do not + call add_referenced_var on globals. + * matrix-reorg.c (transform_access_sites): Likewise. + 2012-05-29 Steven Bosscher * alias.c (reg_known_value): Make this a VEC. diff --git a/gcc/matrix-reorg.c b/gcc/matrix-reorg.c index 72a6a71af05..8395dd2beae 100644 --- a/gcc/matrix-reorg.c +++ b/gcc/matrix-reorg.c @@ -1914,7 +1914,6 @@ transform_access_sites (void **slot, void *data ATTRIBUTE_UNUSED) num_elements = fold_build2 (MULT_EXPR, sizetype, fold_convert (sizetype, acc_info->index), fold_convert (sizetype, d_size)); - add_referenced_var (d_size); gsi = gsi_for_stmt (acc_info->stmt); tmp1 = force_gimple_operand_gsi (&gsi, num_elements, true, NULL, true, GSI_SAME_STMT); diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 2c6393367d5..fe477ff5ee5 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -430,7 +430,10 @@ find_vars_r (tree *tp, int *walk_subtrees, void *data) /* If T is a regular variable that the optimizers are interested in, add it to the list of variables. */ - else if (SSA_VAR_P (*tp)) + else if ((TREE_CODE (*tp) == VAR_DECL + && !is_global_var (*tp)) + || TREE_CODE (*tp) == PARM_DECL + || TREE_CODE (*tp) == RESULT_DECL) add_referenced_var_1 (*tp, fn); /* Type, _DECL and constant nodes have no interesting children. @@ -560,22 +563,24 @@ add_referenced_var_1 (tree var, struct function *fn) || TREE_CODE (var) == PARM_DECL || TREE_CODE (var) == RESULT_DECL); - if (!(TREE_CODE (var) == VAR_DECL - && VAR_DECL_IS_VIRTUAL_OPERAND (var)) - && is_global_var (var)) - return false; + gcc_checking_assert ((TREE_CODE (var) == VAR_DECL + && VAR_DECL_IS_VIRTUAL_OPERAND (var)) + || !is_global_var (var)); - if (!*DECL_VAR_ANN_PTR (var)) - *DECL_VAR_ANN_PTR (var) = ggc_alloc_cleared_var_ann_d (); - - /* Insert VAR into the referenced_vars hash table if it isn't present. */ + /* Insert VAR into the referenced_vars hash table if it isn't present + and allocate its var-annotation. */ if (referenced_var_check_and_insert (var, fn)) - return true; + { + gcc_checking_assert (!*DECL_VAR_ANN_PTR (var)); + *DECL_VAR_ANN_PTR (var) = ggc_alloc_cleared_var_ann_d (); + return true; + } return false; } -/* Remove VAR from the list. */ +/* Remove VAR from the list of referenced variables and clear its + var-annotation. */ void remove_referenced_var (tree var) @@ -585,14 +590,16 @@ remove_referenced_var (tree var) void **loc; unsigned int uid = DECL_UID (var); - /* Preserve var_anns of globals. */ - if (!is_global_var (var) - && (v_ann = var_ann (var))) - { - ggc_free (v_ann); - *DECL_VAR_ANN_PTR (var) = NULL; - } - gcc_assert (DECL_P (var)); + gcc_checking_assert (TREE_CODE (var) == VAR_DECL + || TREE_CODE (var) == PARM_DECL + || TREE_CODE (var) == RESULT_DECL); + + gcc_checking_assert (!is_global_var (var)); + + v_ann = var_ann (var); + ggc_free (v_ann); + *DECL_VAR_ANN_PTR (var) = NULL; + in.uid = uid; loc = htab_find_slot_with_hash (gimple_referenced_vars (cfun), &in, uid, NO_INSERT); diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c index edd7755a701..dfb0ae1ee7d 100644 --- a/gcc/tree-mudflap.c +++ b/gcc/tree-mudflap.c @@ -427,10 +427,6 @@ 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/varpool.c b/gcc/varpool.c index 487413ded6d..bcd0a063a79 100644 --- a/gcc/varpool.c +++ b/gcc/varpool.c @@ -449,7 +449,7 @@ add_new_static_var (tree type) tree new_decl; struct varpool_node *new_node; - new_decl = create_tmp_var (type, NULL); + new_decl = create_tmp_var_raw (type, NULL); DECL_NAME (new_decl) = create_tmp_var_name (NULL); TREE_READONLY (new_decl) = 0; TREE_STATIC (new_decl) = 1; -- 2.11.4.GIT