From 1b18747f2eb6c9aec887707c3d1bda47a28e304a Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Mon, 25 Jan 1999 10:32:18 +0000 Subject: [PATCH] except.c, [...] (expand_resume_after_catch): new function. Mon Jan 25 17:39:19 1999 Andrew Haley * except.c, java-except.h (expand_resume_after_catch): new function. * expr.c (java_lang_expand_expr): call expand_resume_after_catch to branch back to main flow of control after a catch block. From-SVN: r24857 --- gcc/java/ChangeLog | 7 +++++++ gcc/java/except.c | 9 +++++++++ gcc/java/expr.c | 11 +---------- gcc/java/java-except.h | 1 + 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 9b67b0ab46e..b2419f8d0ee 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,10 @@ +Mon Jan 25 17:39:19 1999 Andrew Haley + + * except.c, java-except.h (expand_resume_after_catch): new + function. + * expr.c (java_lang_expand_expr): call expand_resume_after_catch + to branch back to main flow of control after a catch block. + Sat Jan 23 23:02:43 1999 Kaveh R. Ghazi * Makefile.in (parse.o): Depend on $(CONFIG_H) and diff --git a/gcc/java/except.c b/gcc/java/except.c index 4628823f11d..7c393be6c46 100644 --- a/gcc/java/except.c +++ b/gcc/java/except.c @@ -293,3 +293,12 @@ emit_handlers () emit_label (funcend); } } + +/* Resume executing at the statement immediately after the end of an + exception region. */ + +void +expand_resume_after_catch () +{ + expand_goto (top_label_entry (&caught_return_label_stack)); +} diff --git a/gcc/java/expr.c b/gcc/java/expr.c index 77cd45e8088..55e6ef63d2c 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -1896,16 +1896,7 @@ java_lang_expand_expr (exp, target, tmode, modifier) start_catch_handler (prepare_eh_table_type (type)); expand_expr_stmt (TREE_OPERAND (current, 0)); - /* Need to expand a goto to the end of the function here, - but not for the catch everything handler. */ - if (type) - { - if (return_label) - emit_jump (return_label); - else - fatal ("No return_label for this function - " - "java_lang_expand_expr"); - } + expand_resume_after_catch (); end_catch_handler (); } diff --git a/gcc/java/java-except.h b/gcc/java/java-except.h index f6e77b0d447..cdc123d744a 100644 --- a/gcc/java/java-except.h +++ b/gcc/java/java-except.h @@ -71,3 +71,4 @@ extern void maybe_end_try PROTO ((int)); extern int add_handler PROTO ((int, int, tree, tree)); +extern void expand_resume_after_catch PROTO ((void));