aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-loop-distribution.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-11-02 15:45:26 +0000
committerRichard Guenther <rguenther@suse.de>2010-11-02 15:45:26 +0000
commite1b843154e756740ed875ffed396230aa0b2b0d8 (patch)
treed6c665084032f37ed12dc25745961e9a79b83546 /gcc/tree-loop-distribution.c
parentec113794583c38e4b1724bc19e7796d944f39e4d (diff)
2010-11-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/46177 * tree-loop-distribution.c (prop_phis): Use mark_virtual_phi_result_for_renaming. * gcc.dg/pr46177.c: New testcase. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@166193 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-loop-distribution.c')
-rw-r--r--gcc/tree-loop-distribution.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
index 63f717807d4..bc3f54d97d4 100644
--- a/gcc/tree-loop-distribution.c
+++ b/gcc/tree-loop-distribution.c
@@ -317,27 +317,20 @@ static void
prop_phis (basic_block b)
{
gimple_stmt_iterator psi;
- gimple_seq phis = phi_nodes (b);
- for (psi = gsi_start (phis); !gsi_end_p (psi); )
+ for (psi = gsi_start_phis (b); !gsi_end_p (psi); )
{
gimple phi = gsi_stmt (psi);
- tree def = gimple_phi_result (phi), use = gimple_phi_arg_def (phi, 0);
-
- gcc_assert (gimple_phi_num_args (phi) == 1);
+ tree def = gimple_phi_result (phi);
if (!is_gimple_reg (def))
+ mark_virtual_phi_result_for_renaming (phi);
+ else
{
- imm_use_iterator iter;
- use_operand_p use_p;
- gimple stmt;
-
- FOR_EACH_IMM_USE_STMT (stmt, iter, def)
- FOR_EACH_IMM_USE_ON_STMT (use_p, iter)
- SET_USE (use_p, use);
+ tree use = gimple_phi_arg_def (phi, 0);
+ gcc_assert (gimple_phi_num_args (phi) == 1);
+ replace_uses_by (def, use);
}
- else
- replace_uses_by (def, use);
remove_phi_node (&psi, true);
}