summaryrefslogtreecommitdiff
path: root/gcc/tree-complex.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2008-12-29 18:25:19 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2008-12-29 18:25:19 +0000
commit3985d017fe7052520debe848d3153ad47e971c0b (patch)
treed72f82cac0cb96faec875085d1d3a9b6077f8ae7 /gcc/tree-complex.c
parent9311ed8ae10d7af1258847890e2538027380d6ec (diff)
downloadgcc-3985d017fe7052520debe848d3153ad47e971c0b.tar.gz
PR c++/36191
* tree-complex.c (expand_complex_libcall): Call maybe_clean_or_replace_eh_stmt and gimple_purge_dead_eh_edges instead of passing true as 3rd argument to gsi_replace. * g++.dg/torture/pr36191.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@142950 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-complex.c')
-rw-r--r--gcc/tree-complex.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c
index 939bd6f1a63..c7a7ad48f6e 100644
--- a/gcc/tree-complex.c
+++ b/gcc/tree-complex.c
@@ -953,10 +953,10 @@ expand_complex_libcall (gimple_stmt_iterator *gsi, tree ar, tree ai,
enum machine_mode mode;
enum built_in_function bcode;
tree fn, type, lhs;
- gimple stmt;
+ gimple old_stmt, stmt;
- stmt = gsi_stmt (*gsi);
- lhs = gimple_assign_lhs (stmt);
+ old_stmt = gsi_stmt (*gsi);
+ lhs = gimple_assign_lhs (old_stmt);
type = TREE_TYPE (lhs);
mode = TYPE_MODE (type);
@@ -973,7 +973,10 @@ expand_complex_libcall (gimple_stmt_iterator *gsi, tree ar, tree ai,
stmt = gimple_build_call (fn, 4, ar, ai, br, bi);
gimple_call_set_lhs (stmt, lhs);
update_stmt (stmt);
- gsi_replace (gsi, stmt, true);
+ gsi_replace (gsi, stmt, false);
+
+ if (maybe_clean_or_replace_eh_stmt (old_stmt, stmt))
+ gimple_purge_dead_eh_edges (gsi_bb (*gsi));
if (gimple_in_ssa_p (cfun))
{