summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/cfgrtl.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcc/cfgrtl.c')
-rw-r--r--contrib/gcc/cfgrtl.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/contrib/gcc/cfgrtl.c b/contrib/gcc/cfgrtl.c
index 7780ca5..e019606 100644
--- a/contrib/gcc/cfgrtl.c
+++ b/contrib/gcc/cfgrtl.c
@@ -2261,8 +2261,12 @@ purge_dead_edges (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;
OpenPOWER on IntegriCloud