From 0b75beaaaf8af46fcbd7bd9ae535a6255737b69a Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Wed, 17 Sep 2003 09:11:01 +0200 Subject: re PR rtl-optimization/11646 (ICE in commit_one_edge_insertion with -fnon-call-exceptions -fgcse -O) PR optimization/11646 * cfgrtl.c (purge_dead_edges) [JUMP_INSN]: Rematerialize the EDGE_ABNORMAL flag for EH edges. * toplev.c (rest_of_handle_cse): Delete unreachable blocks if dead edges were purged. From-SVN: r71455 --- gcc/cfgrtl.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'gcc/cfgrtl.c') diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c index 7441cd9..f383438 100644 --- a/gcc/cfgrtl.c +++ b/gcc/cfgrtl.c @@ -2255,8 +2255,12 @@ purge_dead_edges (basic_block bb) continue; else if ((e->flags & EDGE_EH) && can_throw_internal (insn)) /* Keep the edges that correspond to exceptions thrown by - this instruction. */ - continue; + this instruction and rematerialize the EDGE_ABNORMAL + flag we just cleared above. */ + { + e->flags |= EDGE_ABNORMAL; + continue; + } /* We do not need this edge. */ bb->flags |= BB_DIRTY; -- cgit v1.1