aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2004-11-24 13:33:26 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2004-11-24 13:33:26 +0000
commit9323afaec859608f99a56c9882f175245889b012 (patch)
tree0aa6e78f1b6abdfa4e31d3f0174f4cdef20aa44e /gcc
parent58e594dca99624eb8d3f97b30e0b1027f58bac96 (diff)
downloadgcc-9323afaec859608f99a56c9882f175245889b012.zip
gcc-9323afaec859608f99a56c9882f175245889b012.tar.gz
gcc-9323afaec859608f99a56c9882f175245889b012.tar.bz2
tree-ssa-pre.c (phi_translate): Use find_edge to find the index of a PHI argument.
* tree-ssa-pre.c (phi_translate): Use find_edge to find the index of a PHI argument. From-SVN: r91154
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/tree-ssa-pre.c19
2 files changed, 14 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fb41935..9dd15b2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-24 Kazu Hirata <kazu@cs.umass.edu>
+
+ * tree-ssa-pre.c (phi_translate): Use find_edge to find the
+ index of a PHI argument.
+
2004-11-24 Steven Bosscher <stevenb@suse.de>
* expr.c (expand_expr_real_1): Remove cases for EXIT_BLOCK_EXPR
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index 38d5d2b..5bb552f 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -922,22 +922,21 @@ phi_translate (tree expr, value_set_t set, basic_block pred,
case tcc_exceptional:
{
tree phi = NULL;
- int i;
+ edge e;
gcc_assert (TREE_CODE (expr) == SSA_NAME);
if (TREE_CODE (SSA_NAME_DEF_STMT (expr)) == PHI_NODE)
phi = SSA_NAME_DEF_STMT (expr);
else
return expr;
- for (i = 0; i < PHI_NUM_ARGS (phi); i++)
- if (PHI_ARG_EDGE (phi, i)->src == pred)
- {
- tree val;
- if (is_undefined_value (PHI_ARG_DEF (phi, i)))
- return NULL;
- val = vn_lookup_or_add (PHI_ARG_DEF (phi, i), NULL);
- return PHI_ARG_DEF (phi, i);
- }
+ e = find_edge (pred, bb_for_stmt (phi));
+ if (e)
+ {
+ if (is_undefined_value (PHI_ARG_DEF (phi, e->dest_idx)))
+ return NULL;
+ vn_lookup_or_add (PHI_ARG_DEF (phi, e->dest_idx), NULL);
+ return PHI_ARG_DEF (phi, e->dest_idx);
+ }
}
return expr;