aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-09-18 11:38:25 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-09-18 11:38:25 +0000
commita9db10d4aa286aa482d3305e71a3b3a14ae4360d (patch)
tree9ab1c7cb41385ab68e81963d8e7e89884da2e64a /gcc/tree-inline.c
parent5d3b14bd9ac79db3f2b957752b41bd0641f49829 (diff)
downloadgcc-a9db10d4aa286aa482d3305e71a3b3a14ae4360d.zip
gcc-a9db10d4aa286aa482d3305e71a3b3a14ae4360d.tar.gz
gcc-a9db10d4aa286aa482d3305e71a3b3a14ae4360d.tar.bz2
re PR tree-optimization/45709 (internal compiler error: in add_phi_arg, at tree-phinodes.c:395)
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. From-SVN: r164390
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 2d3958f..32cd852 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));