diff options
author | Richard Guenther <rguenther@suse.de> | 2012-05-21 14:53:21 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2012-05-21 14:53:21 +0000 |
commit | cb0c9fc30529a672fb0105d505523668da17da33 (patch) | |
tree | 13f0febe9af8ce8dfe21d99708c299d629e8aa5e /gcc | |
parent | 01c7ccbb81d2ee750e30cc8bf10deb9ed07e7bf0 (diff) | |
download | gcc-cb0c9fc30529a672fb0105d505523668da17da33.zip gcc-cb0c9fc30529a672fb0105d505523668da17da33.tar.gz gcc-cb0c9fc30529a672fb0105d505523668da17da33.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/tree-dfa.c | 18 | ||||
-rw-r--r-- | gcc/tree-ssa-live.c | 3 |
3 files changed, 14 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d4f6e5f..7702970 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +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> PR c/53148 diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c index 007b819..46fcfc1 100644 --- a/gcc/tree-dfa.c +++ b/gcc/tree-dfa.c @@ -577,24 +577,16 @@ set_default_def (tree var, tree def) bool 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)) create_var_ann (var); /* Insert VAR into the referenced_vars hash table if it isn't present. */ if (referenced_var_check_and_insert (var)) - { - /* 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 true; return false; } diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index 31eac11..5f3484d 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -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)) && DECL_CONTEXT (t) == current_function_decl) 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 which are not DECL_IGNORED_P to tell if they might be used in the IL. */ |