http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58165

--- Comment #4 from Alexander Ivchenko <aivchenk at gmail dot com> ---
I firstly did something like that:

diff --git a/gcc/tree-call-cdce.c b/gcc/tree-call-cdce.c
index 9b6186e..5862ebf 100644
--- a/gcc/tree-call-cdce.c
+++ b/gcc/tree-call-cdce.c
@@ -771,6 +771,9 @@ shrink_wrap_one_built_in_call (gimple bi_call)
   join_tgt_in_edge_fall_thru = make_edge (guard_bb0, join_tgt_bb,
                                           EDGE_FALSE_VALUE);

+  if (!gimple_call_nothrow_p (bi_call))
+    make_eh_edges (bi_call);
+
   bi_call_in_edge0->probability = REG_BR_PROB_BASE * ERR_PROB;
   bi_call_in_edge0->count =
       apply_probability (guard_bb0->count,

which also helped.. but now I see that we shouldn't split the block

Reply via email to