aboutsummaryrefslogtreecommitdiff
path: root/gcc/flow.c
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1997-09-29 16:49:57 +0000
committerJeff Law <law@gcc.gnu.org>1997-09-29 10:49:57 -0600
commit974c50f907d067cdaba43812aba6a87314685346 (patch)
tree16dd39f6b75f3091de36ce429654ec1b0f825301 /gcc/flow.c
parent2b67aa29e589b9244741d39a60dbafd2b1bd84af (diff)
downloadgcc-974c50f907d067cdaba43812aba6a87314685346.zip
gcc-974c50f907d067cdaba43812aba6a87314685346.tar.gz
gcc-974c50f907d067cdaba43812aba6a87314685346.tar.bz2
flow.c (find_basic_blocks): Mark calls as potentially jumping to the EH labels.
* flow.c (find_basic_blocks): Mark calls as potentially jumping to the EH labels. From-SVN: r15792
Diffstat (limited to 'gcc/flow.c')
-rw-r--r--gcc/flow.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index f1774dc..7538457 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -465,8 +465,9 @@ find_basic_blocks (f, nonlocal_label_list)
if (! LABEL_REF_NONLOCAL_P (x))
block_live[BLOCK_NUM (XEXP (x, 0))] = 1;
- for (x = exception_handler_labels; x; x = XEXP (x, 1))
- block_live[BLOCK_NUM (XEXP (x, 0))] = 1;
+ if (asynchronous_exceptions)
+ for (x = exception_handler_labels; x; x = XEXP (x, 1))
+ block_live[BLOCK_NUM (XEXP (x, 0))] = 1;
/* Record which basic blocks control can drop in to. */
@@ -531,6 +532,11 @@ find_basic_blocks (f, nonlocal_label_list)
mark_label_ref (gen_rtx (LABEL_REF, VOIDmode, XEXP (x, 0)),
insn, 0);
+ if (! asynchronous_exceptions)
+ for (x = exception_handler_labels; x; x = XEXP (x, 1))
+ mark_label_ref (gen_rtx (LABEL_REF, VOIDmode, XEXP (x, 0)),
+ insn, 0);
+
/* ??? This could be made smarter:
in some cases it's possible to tell that certain
calls will not do a nonlocal goto.