Commit cb0c9fc3 by Richard Guenther Committed by Richard Biener

tree-dfa.c (add_referenced_var): Do not walk DECL_INITIAL for more referenced vars.

2012-05-21  Richard Guenther  <rguenther@suse.de>

	* tree-dfa.c (add_referenced_var): Do not walk DECL_INITIAL for
	more referenced vars.
	* tree-ssa-live.c (mark_all_vars_used_1): Only set the used
	flag on variables that have a var-annotation.

From-SVN: r187719
parent 01c7ccbb
2012-05-21 Richard Guenther <rguenther@suse.de>
* tree-dfa.c (add_referenced_var): Do not walk DECL_INITIAL for
more referenced vars.
* tree-ssa-live.c (mark_all_vars_used_1): Only set the used
flag on variables that have a var-annotation.
2012-05-21 Joseph Myers <joseph@codesourcery.com> 2012-05-21 Joseph Myers <joseph@codesourcery.com>
PR c/53148 PR c/53148
......
...@@ -577,24 +577,16 @@ set_default_def (tree var, tree def) ...@@ -577,24 +577,16 @@ set_default_def (tree var, tree def)
bool bool
add_referenced_var (tree var) add_referenced_var (tree var)
{ {
gcc_assert (DECL_P (var)); gcc_checking_assert (TREE_CODE (var) == VAR_DECL
|| TREE_CODE (var) == PARM_DECL
|| TREE_CODE (var) == RESULT_DECL);
if (!*DECL_VAR_ANN_PTR (var)) if (!*DECL_VAR_ANN_PTR (var))
create_var_ann (var); create_var_ann (var);
/* 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. */
if (referenced_var_check_and_insert (var)) if (referenced_var_check_and_insert (var))
{ return true;
/* Scan DECL_INITIAL for pointer variables as they may contain
address arithmetic referencing the address of other
variables. As we are only interested in directly referenced
globals or referenced locals restrict this to initializers
than can refer to local variables. */
if (DECL_INITIAL (var)
&& DECL_CONTEXT (var) == current_function_decl)
walk_tree (&DECL_INITIAL (var), find_vars_r, NULL, 0);
return true;
}
return false; return false;
} }
......
...@@ -377,7 +377,8 @@ mark_all_vars_used_1 (tree *tp, int *walk_subtrees, void *data) ...@@ -377,7 +377,8 @@ mark_all_vars_used_1 (tree *tp, int *walk_subtrees, void *data)
if (data != NULL && bitmap_clear_bit ((bitmap) data, DECL_UID (t)) if (data != NULL && bitmap_clear_bit ((bitmap) data, DECL_UID (t))
&& DECL_CONTEXT (t) == current_function_decl) && DECL_CONTEXT (t) == current_function_decl)
mark_all_vars_used (&DECL_INITIAL (t), data); mark_all_vars_used (&DECL_INITIAL (t), data);
set_is_used (t); if (var_ann (t) != NULL)
set_is_used (t);
} }
/* remove_unused_scope_block_p requires information about labels /* remove_unused_scope_block_p requires information about labels
which are not DECL_IGNORED_P to tell if they might be used in the IL. */ which are not DECL_IGNORED_P to tell if they might be used in the IL. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment