mirror of git://gcc.gnu.org/git/gcc.git
tree-flow.h (referenced_var): Move define ...
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. From-SVN: r162368
This commit is contained in:
parent
370ae5992f
commit
3f2930d891
|
|
@ -1,3 +1,16 @@
|
|||
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
|
||||
|
|
|
|||
|
|
@ -534,11 +534,7 @@ pp_points_to_solution (pretty_printer *buffer, struct pt_solution *pt)
|
|||
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);
|
||||
|
|
|
|||
|
|
@ -495,7 +495,6 @@ referenced_var_lookup (unsigned int uid)
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -98,6 +98,16 @@ next_htab_element (htab_iterator *hti)
|
|||
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. */
|
||||
|
||||
|
|
|
|||
|
|
@ -321,7 +321,6 @@ typedef struct
|
|||
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)))
|
||||
|
|
|
|||
|
|
@ -1470,11 +1470,7 @@ dump_decl_set (FILE *file, bitmap set)
|
|||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue