From 0bfac35f9d98bbed3e18c312c85dc2009103216d Mon Sep 17 00:00:00 2001 From: Daniel Berlin Date: Mon, 11 Jul 2005 02:16:20 +0000 Subject: [PATCH] tree-ssa-structalias.c (update_alias_info): Change counting of references to not include vdefs. 2005-07-10 Daniel Berlin * tree-ssa-structalias.c (update_alias_info): Change counting of references to not include vdefs. From-SVN: r101861 --- gcc/ChangeLog | 5 +++++ gcc/tree-ssa-structalias.c | 21 ++++++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e6771e8dfef..ffba6bdf7d1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-07-10 Daniel Berlin + + * tree-ssa-structalias.c (update_alias_info): Change counting of + references to not include vdefs. + 2005-07-10 Daniel Berlin * tree-ssa-alias.c (free_used_part_map): Add missing free. diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c index 7ec5270ad77..412a96619f3 100644 --- a/gcc/tree-ssa-structalias.c +++ b/gcc/tree-ssa-structalias.c @@ -2501,9 +2501,9 @@ update_alias_info (tree stmt, struct alias_info *ai) { bitmap addr_taken; use_operand_p use_p; - def_operand_p def_p; ssa_op_iter iter; bool stmt_escapes_p = is_escape_site (stmt, ai); + tree op; /* Mark all the variables whose address are taken by the statement. */ addr_taken = addresses_taken (stmt); @@ -2629,16 +2629,27 @@ update_alias_info (tree stmt, struct alias_info *ai) } } - /* Update reference counter for definitions to any potentially - aliased variable. This is used in the alias grouping heuristics. */ - FOR_EACH_PHI_OR_STMT_DEF (def_p, stmt, iter, SSA_OP_ALL_DEFS) + if (TREE_CODE (stmt) == PHI_NODE) + return; + + /* Update reference counter for definitions to any + potentially aliased variable. This is used in the alias + grouping heuristics. */ + FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF) { - tree op = DEF_FROM_PTR (def_p); tree var = SSA_NAME_VAR (op); var_ann_t ann = var_ann (var); bitmap_set_bit (ai->written_vars, DECL_UID (var)); if (may_be_aliased (var)) NUM_REFERENCES_INC (ann); + + } + + /* Mark variables in V_MAY_DEF operands as being written to. */ + FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_VIRTUAL_DEFS) + { + tree var = DECL_P (op) ? op : SSA_NAME_VAR (op); + bitmap_set_bit (ai->written_vars, DECL_UID (var)); } }