aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/except.c7
2 files changed, 11 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dc730ed..8c89c33 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2004-03-07 Jan Hubicka <jh@suse.cz>
+
+ * except.c (emit_to_new_bb_before): Break fallthru edges.
+
2004-03-07 Stephane Carrez <stcarrez@nerim.fr>
* config/m68hc11/m68hc11.md ("*lshrsi3_const"): Disable for 68HC12.
diff --git a/gcc/except.c b/gcc/except.c
index d290a60..0084af1 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -1637,7 +1637,14 @@ emit_to_new_bb_before (rtx seq, rtx insn)
{
rtx last;
basic_block bb;
+ edge e;
+ /* If there happens to be an fallthru edge (possibly created by cleanup_cfg
+ call), we don't want it to go into newly created landing pad or other EH
+ construct. */
+ for (e = BLOCK_FOR_INSN (insn)->pred; e; e = e->pred_next)
+ if (e->flags & EDGE_FALLTHRU)
+ force_nonfallthru (e);
last = emit_insn_before (seq, insn);
if (GET_CODE (last) == BARRIER)
last = PREV_INSN (last);