summaryrefslogtreecommitdiff
path: root/gcc/tree-ssa.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-21 09:46:11 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-07-21 09:46:11 +0000
commit11bbec1341e4d8a1ddfc7e5f81e1ef251dd3cff4 (patch)
treef2703985f3ba0f658ced8d1bb4ac68c69a393e5a /gcc/tree-ssa.c
parent5cbc53e292c83887dd882fe02e2f9dc172304c6d (diff)
downloadgcc-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.c13
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);
}