From f5e5b46c4b1720ef7ad0971df215885e2429e41c Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Tue, 7 Sep 2010 12:27:45 +0000 Subject: re PR middle-end/45569 (ICE: verify_stmts failed: statement marked for throw in middle of block with -fnon-call-exceptions) 2010-09-07 Richard Guenther PR middle-end/45569 * tree-eh.c (operation_could_trap_helper_p): Neither COMPLEX_EXPR nor CONSTRUCTOR can trap. * tree-complex.c (update_complex_assignment): Update EH info. * g++.dg/eh/pr45569.C: New testcase. From-SVN: r163947 --- gcc/tree-complex.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'gcc/tree-complex.c') diff --git a/gcc/tree-complex.c b/gcc/tree-complex.c index 4916571..af85644 100644 --- a/gcc/tree-complex.c +++ b/gcc/tree-complex.c @@ -662,12 +662,16 @@ static void update_complex_assignment (gimple_stmt_iterator *gsi, tree r, tree i) { gimple_stmt_iterator orig_si = *gsi; + gimple stmt; if (gimple_in_ssa_p (cfun)) update_complex_components (gsi, gsi_stmt (*gsi), r, i); gimple_assign_set_rhs_with_ops (&orig_si, COMPLEX_EXPR, r, i); - update_stmt (gsi_stmt (orig_si)); + stmt = gsi_stmt (orig_si); + update_stmt (stmt); + if (maybe_clean_eh_stmt (stmt)) + gimple_purge_dead_eh_edges (gimple_bb (stmt)); } -- cgit v1.1