aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-into-ssa.c
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2012-08-01 14:58:38 +0000
committerMichael Matz <matz@gcc.gnu.org>2012-08-01 14:58:38 +0000
commit5f564b8f5655167ef3837eb104207705593276dc (patch)
treeb258f1c4ee4a258d4f7b57723cea0c69efca904c /gcc/tree-into-ssa.c
parent3cfd446903f49d549cc5f1a3ea07497834ece1b1 (diff)
downloadgcc-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.c55
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)