diff options
author | Michael Matz <matz@suse.de> | 2012-08-01 14:58:38 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2012-08-01 14:58:38 +0000 |
commit | 5f564b8f5655167ef3837eb104207705593276dc (patch) | |
tree | b258f1c4ee4a258d4f7b57723cea0c69efca904c /gcc/tree-into-ssa.c | |
parent | 3cfd446903f49d549cc5f1a3ea07497834ece1b1 (diff) | |
download | gcc-5f564b8f5655167ef3837eb104207705593276dc.zip gcc-5f564b8f5655167ef3837eb104207705593276dc.tar.gz gcc-5f564b8f5655167ef3837eb104207705593276dc.tar.bz2 |
tree-complex.c (init_parameter_lattice_values): Don't call var_ann.
* tree-complex.c (init_parameter_lattice_values): Don't call var_ann.
* tree-dfa.c (struct dfa_stats_d): Remove num_var_anns member.
(dump_dfa_stats): Don't dump stats about var anns.
(collect_dfa_stats): Don't collect them.
(add_referenced_var_1): Don't set var annotation pointers.
(remove_referenced_var): Ditto, and only remove it it's in the
hash table.
* tree-flow-inline.h (var_ann): Remove.
* tree-flow.h (struct var_ann_d, var_ann_t): Remove.
* tree-inline.c (remapped_type): Remove.
(can_be_nonlocal): Most variable will be considered live here,
return false earlier.
(remap_decls): Don't call var_ann, all variables will be considered
referenced here.
(copy_debug_stmt): Ditto, and use is_global_var.
* tree-into-ssa.c (rewrite_debug_stmt_uses): Use get_current_def to
determine if a variable was referred to, not var_ann.
* tree-ssa-live.c (remove_unused_scope_block_p): Don't check var_ann.
(remove_unused_locals): Ditto.
* tree-ssa.c (delete_tree_ssa): Don't free/clear var ann pointers.
* tree-tailcall.c (arg_needs_copy_p): Don't check var_ann.
* tree.c (copy_node_stat): Don't clear var ann pointer.
* tree.h (tree_result_decl, tree_parm_decl, tree_var_decl): Remove
ann member.
(DECL_VAR_ANN_PTR): Remove.
* tree-flow.h (struct var_ann_d): Rename used member.
(set_is_used): Don't declare.
* tree-flow-inline.h (clear_is_used): Remove.
(set_is_used, is_used_p): Move to ...
* tree-ssa-live.c (set_is_used, is_used_p): ... here, and use
on the side bitmap.
(usedvars): New bitmap.
(dump_scope_block): Don't dump unusedness.
(remove_unused_locals): Allocate and free usedvars.
* tree-nrv.c (tree_nrv): Don't clear used flags here.
* tree-flow.h (struct var_ann_d): Remove base_var_processed and
base_index members.
* tree-ssa-live.h (struct _var_map): Remove basevars member.
(VAR_ANN_BASE_INDEX): Remove.
* tree-ssa-live.c (var_map_base_init): Use a hash table instead
of var annotation to compress index space. Don't deal with above
removed members.
(var_map_base_fini): Don't free basevars.
(init_var_map): Don't clear basevars.
From-SVN: r190039
Diffstat (limited to 'gcc/tree-into-ssa.c')
-rw-r--r-- | gcc/tree-into-ssa.c | 55 |
1 files changed, 26 insertions, 29 deletions
diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c index 995a3a7..0884f85 100644 --- a/gcc/tree-into-ssa.c +++ b/gcc/tree-into-ssa.c @@ -1274,9 +1274,10 @@ rewrite_debug_stmt_uses (gimple stmt) FOR_EACH_SSA_USE_OPERAND (use_p, stmt, iter, SSA_OP_USE) { - tree var = USE_FROM_PTR (use_p), def = NULL_TREE; + tree var = USE_FROM_PTR (use_p), def; gcc_assert (DECL_P (var)); - if (var_ann (var) == NULL) + def = get_current_def (var); + if (!def) { if (TREE_CODE (var) == PARM_DECL && single_succ_p (ENTRY_BLOCK_PTR)) { @@ -1318,38 +1319,34 @@ rewrite_debug_stmt_uses (gimple stmt) } else { - def = get_current_def (var); /* Check if get_current_def can be trusted. */ - if (def) + basic_block bb = gimple_bb (stmt); + basic_block def_bb + = SSA_NAME_IS_DEFAULT_DEF (def) + ? NULL : gimple_bb (SSA_NAME_DEF_STMT (def)); + + /* If definition is in current bb, it is fine. */ + if (bb == def_bb) + ; + /* If definition bb doesn't dominate the current bb, + it can't be used. */ + else if (def_bb && !dominated_by_p (CDI_DOMINATORS, bb, def_bb)) + def = NULL; + /* If there is just one definition and dominates the current + bb, it is fine. */ + else if (get_phi_state (var) == NEED_PHI_STATE_NO) + ; + else { - basic_block bb = gimple_bb (stmt); - basic_block def_bb - = SSA_NAME_IS_DEFAULT_DEF (def) - ? NULL : gimple_bb (SSA_NAME_DEF_STMT (def)); + struct def_blocks_d *db_p = get_def_blocks_for (var); - /* If definition is in current bb, it is fine. */ - if (bb == def_bb) - ; - /* If definition bb doesn't dominate the current bb, - it can't be used. */ - else if (def_bb && !dominated_by_p (CDI_DOMINATORS, bb, def_bb)) - def = NULL; - /* If there is just one definition and dominates the current - bb, it is fine. */ - else if (get_phi_state (var) == NEED_PHI_STATE_NO) + /* If there are some non-debug uses in the current bb, + it is fine. */ + if (bitmap_bit_p (db_p->livein_blocks, bb->index)) ; + /* Otherwise give up for now. */ else - { - struct def_blocks_d *db_p = get_def_blocks_for (var); - - /* If there are some non-debug uses in the current bb, - it is fine. */ - if (bitmap_bit_p (db_p->livein_blocks, bb->index)) - ; - /* Otherwise give up for now. */ - else - def = NULL; - } + def = NULL; } } if (def == NULL) |