summaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-18 11:38:25 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2010-09-18 11:38:25 +0000
commite534438bb962d587cc99244d1647dbd150aa2860 (patch)
tree9ab1c7cb41385ab68e81963d8e7e89884da2e64a /gcc/tree-inline.c
parent54d533d306f88b283ef8a412b04358db4f54f00e (diff)
downloadgcc-e534438bb962d587cc99244d1647dbd150aa2860.tar.gz
2010-09-18 Richard Guenther <rguenther@suse.de>
PR tree-optimization/45709 * tree-inline.c (copy_phis_for_bb): Fixup new_edge when we splitted it. * g++.dg/torture/pr45709.C: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164390 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r--gcc/tree-inline.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 2d3958f2c04..32cd8526252 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -2021,8 +2021,11 @@ copy_phis_for_bb (basic_block bb, copy_body_data *id)
&& !is_gimple_val (new_arg))
{
gimple_seq stmts = NULL;
+ basic_block tem;
new_arg = force_gimple_operand (new_arg, &stmts, true, NULL);
- gsi_insert_seq_on_edge_immediate (new_edge, stmts);
+ tem = gsi_insert_seq_on_edge_immediate (new_edge, stmts);
+ if (tem)
+ new_edge = single_succ_edge (tem);
}
add_phi_arg (new_phi, new_arg, new_edge,
gimple_phi_arg_location_from_edge (phi, old_edge));