diff options
author | Jeff Law <law@gcc.gnu.org> | 1997-11-27 21:42:28 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1997-11-27 21:42:28 -0700 |
commit | 2d2e70543133b6b86f35f8533aaf1b76ad2d4b11 (patch) | |
tree | 629aeffd7c9049856a9cc8d450a260b9d69d62f7 /gcc | |
parent | 586a5f993abceb8ea62bdd39f2e0875ee11baace (diff) | |
download | gcc-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.c | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -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); } } |