diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a54e9490afe..1a09dcc78c3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-10-26 Tom de Vries + + PR tree-optimization/50763 + * tree-ssa-tail-merge.c (replace_block_by): Update vops if phi_vuse1 or + phi_vuse2 is NULL_TREE only if bb1 dominates or is dominated by bb2. + 2011-10-26 Richard Guenther PR lto/41844 diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c index f7b2f5278d7..eb4bc92bd62 100644 --- a/gcc/tree-ssa-tail-merge.c +++ b/gcc/tree-ssa-tail-merge.c @@ -1551,7 +1551,12 @@ replace_block_by (basic_block bb1, basic_block bb2, bool update_vops) phi_vuse1 = vop_at_entry (bb1); /* If both are not found, it means there's no need to update. */ - update_vops = phi_vuse1 != NULL_TREE || phi_vuse2 != NULL_TREE; + if (phi_vuse1 == NULL_TREE && phi_vuse2 == NULL_TREE) + update_vops = false; + else if (phi_vuse1 == NULL_TREE) + update_vops = dominated_by_p (CDI_DOMINATORS, bb1, bb2); + else if (phi_vuse2 == NULL_TREE) + update_vops = dominated_by_p (CDI_DOMINATORS, bb2, bb1); } if (phi_vuse1 && gimple_bb (SSA_NAME_DEF_STMT (phi_vuse1)) == bb1)