aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1997-11-27 21:42:28 -0700
committerJeff Law <law@gcc.gnu.org>1997-11-27 21:42:28 -0700
commit2d2e70543133b6b86f35f8533aaf1b76ad2d4b11 (patch)
tree629aeffd7c9049856a9cc8d450a260b9d69d62f7 /gcc
parent586a5f993abceb8ea62bdd39f2e0875ee11baace (diff)
downloadgcc-2d2e70543133b6b86f35f8533aaf1b76ad2d4b11.zip
gcc-2d2e70543133b6b86f35f8533aaf1b76ad2d4b11.tar.gz
gcc-2d2e70543133b6b86f35f8533aaf1b76ad2d4b11.tar.bz2
Grr. Used the wrong patchfile last time.
From-SVN: r16816
Diffstat (limited to 'gcc')
-rw-r--r--gcc/flow.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index 27409de..8311566 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -574,7 +574,11 @@ find_basic_blocks (f, nonlocal_label_list)
associated insns aren't marked dead, so we make
the block in question live and create an edge from
this insn to the label. This is not strictly
- correct, but it is close enough for now. */
+ correct, but it is close enough for now.
+
+ We also need to mark the CODE_LABEL as reaching
+ its exception handler for nested exceptions to
+ to work. */
for (note = REG_NOTES (insn);
note;
note = XEXP (note, 1))
@@ -586,6 +590,14 @@ find_basic_blocks (f, nonlocal_label_list)
mark_label_ref (gen_rtx (LABEL_REF,
VOIDmode, x),
insn, 0);
+
+ /* If the CODE_LABEL has an active exception
+ handler, then make an edge to the exception
+ handler from this insn. */
+ if (active_eh_handler[INSN_UID (x)])
+ mark_label_ref (gen_rtx (LABEL_REF, VOIDmode,
+ active_eh_handler[INSN_UID (x)]),
+ insn, 0);
}
}