diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-07-21 09:46:11 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-07-21 09:46:11 +0000 |
commit | 11bbec1341e4d8a1ddfc7e5f81e1ef251dd3cff4 (patch) | |
tree | f2703985f3ba0f658ced8d1bb4ac68c69a393e5a /gcc/tree-ssa.c | |
parent | 5cbc53e292c83887dd882fe02e2f9dc172304c6d (diff) | |
download | gcc-11bbec1341e4d8a1ddfc7e5f81e1ef251dd3cff4.tar.gz |
2010-07-21 Richard Guenther <rguenther@suse.de>
* tree-flow.h (referenced_var): Move define ...
* tree-flow-inline.h (referenced_var): ... here as an inline
function. Assert here ...
* tree-dfa.c (referenced_var_lookup): ... instead of here.
* tree-ssa.c (maybe_optimize_var): Check if the variable
is in referenced vars.
(execute_update_addresses_taken): Remove old broken check.
* gimple-pretty-print.c (pp_points_to_solution): Use
referenced_var_lookup.
* tree-into-ssa.c (dump_decl_set): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162368 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa.c')
-rw-r--r-- | gcc/tree-ssa.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index d4c519fdfe2..0be459118e5 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -1881,6 +1881,11 @@ maybe_optimize_var (tree var, bitmap addresses_taken, bitmap not_reg_needs) || bitmap_bit_p (addresses_taken, DECL_UID (var))) return false; + /* If the variable is not in the list of referenced vars then we + do not need to touch it nor can we rename it. */ + if (!referenced_var_lookup (DECL_UID (var))) + return false; + if (TREE_ADDRESSABLE (var) /* Do not change TREE_ADDRESSABLE if we need to preserve var as a non-register. Otherwise we are confused and forget to @@ -2031,13 +2036,7 @@ execute_update_addresses_taken (bool do_optimize) unused vars from BLOCK trees which cause code generation differences for -g vs. -g0. */ for (var = DECL_ARGUMENTS (cfun->decl); var; var = DECL_CHAIN (var)) - { - /* ??? Not all arguments are in referenced vars. */ - if (!var_ann (var)) - continue; - update_vops - |= maybe_optimize_var (var, addresses_taken, not_reg_needs); - } + update_vops |= maybe_optimize_var (var, addresses_taken, not_reg_needs); for (i = 0; VEC_iterate (tree, cfun->local_decls, i, var); ++i) update_vops |= maybe_optimize_var (var, addresses_taken, not_reg_needs); } |