diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-ssa-sink.c | 16 |
2 files changed, 12 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f259167..82368e1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-04-07 Kazu Hirata <kazu@cs.umass.edu> + + * tree-ssa-sink.c (nearest_common_dominator_of_uses): Consider + all immediate uses in PHI nodes. + 2005-04-07 Richard Earnshaw <richard.earnshaw@arm.com> * arm.c (arm_const_double_inline_cost): Handle any constant by diff --git a/gcc/tree-ssa-sink.c b/gcc/tree-ssa-sink.c index cecbae7..54f9fb9 100644 --- a/gcc/tree-ssa-sink.c +++ b/gcc/tree-ssa-sink.c @@ -241,17 +241,15 @@ nearest_common_dominator_of_uses (tree stmt) if (TREE_CODE (usestmt) == PHI_NODE) { int idx = PHI_ARG_INDEX_FROM_USE (use_p); - if (PHI_ARG_DEF (usestmt, idx) == var) + + useblock = PHI_ARG_EDGE (usestmt, idx)->src; + /* Short circuit. Nothing dominates the entry block. */ + if (useblock == ENTRY_BLOCK_PTR) { - useblock = PHI_ARG_EDGE (usestmt, idx)->src; - /* Short circuit. Nothing dominates the entry block. */ - if (useblock == ENTRY_BLOCK_PTR) - { - BITMAP_FREE (blocks); - return NULL; - } - bitmap_set_bit (blocks, useblock->index); + BITMAP_FREE (blocks); + return NULL; } + bitmap_set_bit (blocks, useblock->index); } else { |