* 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
+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.
+
2010-07-21 Jakub Jelinek <jakub@redhat.com>
PR debug/45003
pp_string (buffer, "{ ");
EXECUTE_IF_SET_IN_BITMAP (pt->vars, 0, i, bi)
{
- struct tree_decl_minimal in;
- tree var;
- in.uid = i;
- var = (tree) htab_find_with_hash (gimple_referenced_vars (cfun),
- &in, i);
+ tree var = referenced_var_lookup (i);
if (var)
{
dump_generic_node (buffer, var, 0, dump_flags, false);
struct tree_decl_minimal in;
in.uid = uid;
h = (tree) htab_find_with_hash (gimple_referenced_vars (cfun), &in, uid);
- gcc_assert (h || uid == 0);
return h;
}
return NULL;
}
+/* Get the variable with uid UID from the list of referenced vars. */
+
+static inline tree
+referenced_var (unsigned int uid)
+{
+ tree var = referenced_var_lookup (uid);
+ gcc_assert (var || uid == 0);
+ return var;
+}
+
/* Initialize ITER to point to the first referenced variable in the
referenced_vars hashtable, and return that variable. */
extern tree referenced_var_lookup (unsigned int);
extern bool referenced_var_check_and_insert (tree);
#define num_referenced_vars htab_elements (gimple_referenced_vars (cfun))
-#define referenced_var(i) referenced_var_lookup (i)
#define num_ssa_names (VEC_length (tree, cfun->gimple_df->ssa_names))
#define ssa_name(i) (VEC_index (tree, cfun->gimple_df->ssa_names, (i)))
EXECUTE_IF_SET_IN_BITMAP (set, 0, i, bi)
{
- struct tree_decl_minimal in;
- tree var;
- in.uid = i;
- var = (tree) htab_find_with_hash (gimple_referenced_vars (cfun),
- &in, i);
+ tree var = referenced_var_lookup (i);
if (var)
print_generic_expr (file, var, 0);
else
|| 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
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);
}