aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-05-29 12:48:34 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-05-29 12:48:34 +0000
commita502e67779b2a1291343b6cd2655bfacbae9207b (patch)
treea14fb2aa71ea28c1801fca31518dc9b62e83ce77 /gcc
parent9ff3c7caa816f14eac43fdf220ce6e7ccb0e84a6 (diff)
downloadgcc-a502e67779b2a1291343b6cd2655bfacbae9207b.zip
gcc-a502e67779b2a1291343b6cd2655bfacbae9207b.tar.gz
gcc-a502e67779b2a1291343b6cd2655bfacbae9207b.tar.bz2
tree-dfa.c (find_vars_r): Do not call add_referenced_vars for globals.
2012-05-29 Richard Guenther <rguenther@suse.de> * 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. From-SVN: r187955
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/matrix-reorg.c1
-rw-r--r--gcc/tree-dfa.c45
-rw-r--r--gcc/tree-mudflap.c4
-rw-r--r--gcc/varpool.c2
5 files changed, 39 insertions, 25 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b7bc112..6099b8f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,15 @@
+2012-05-29 Richard Guenther <rguenther@suse.de>
+
+ * 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 <steven@gcc.gnu.org>
* alias.c (reg_known_value): Make this a VEC.
diff --git a/gcc/matrix-reorg.c b/gcc/matrix-reorg.c
index 72a6a71..8395dd2 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 2c63933..fe477ff 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 edd7755..dfb0ae1 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 487413d..bcd0a06 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;