From: Andrew Haley Date: Mon, 25 Jan 1999 10:32:18 +0000 (+0000) Subject: except.c, [...] (expand_resume_after_catch): new function. X-Git-Tag: prereleases/libgcj-0.1~1181 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1b18747f2eb6c9aec887707c3d1bda47a28e304a;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 9b67b0ab46e4..b2419f8d0eee 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 4628823f11d2..7c393be6c461 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 77cd45e80881..55e6ef63d2ce 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 f6e77b0d447a..cdc123d744aa 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));