summaryrefslogtreecommitdiff
path: root/gcc/except.c
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2004-03-07 22:29:28 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2004-03-07 22:29:28 +0000
commit5d2eea9a8b3c6c548d7bba2e506a378c58649a89 (patch)
treeb1fdfd1a628d0fc0acb94b1c4914dd7630a657b6 /gcc/except.c
parentd2155c2ba0b68c23c0f3a6aeb8f6db08cd8dddff (diff)
downloadgcc-5d2eea9a8b3c6c548d7bba2e506a378c58649a89.tar.gz
* except.c (emit_to_new_bb_before): Break fallthru edges.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@79071 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.c')
-rw-r--r--gcc/except.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/except.c b/gcc/except.c
index d290a60ea5b..0084af145b8 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);