diff options
author | Andrew Haley <aph@cygnus.com> | 1999-01-25 10:32:18 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 1999-01-25 10:32:18 +0000 |
commit | 1b18747f2eb6c9aec887707c3d1bda47a28e304a (patch) | |
tree | 530b8265baf728fa4cde7e5d8aee4f0e9aa3a0d6 /gcc | |
parent | 3f7547f7c33e7f1f09fbe1f629ab408d5735607d (diff) | |
download | gcc-1b18747f2eb6c9aec887707c3d1bda47a28e304a.zip gcc-1b18747f2eb6c9aec887707c3d1bda47a28e304a.tar.gz gcc-1b18747f2eb6c9aec887707c3d1bda47a28e304a.tar.bz2 |
except.c, [...] (expand_resume_after_catch): new function.
Mon Jan 25 17:39:19 1999 Andrew Haley <aph@cygnus.com>
* 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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/java/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/java/except.c | 9 | ||||
-rw-r--r-- | gcc/java/expr.c | 11 | ||||
-rw-r--r-- | gcc/java/java-except.h | 1 |
4 files changed, 18 insertions, 10 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 9b67b0a..b2419f8 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,10 @@ +Mon Jan 25 17:39:19 1999 Andrew Haley <aph@cygnus.com> + + * 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 <ghazi@caip.rutgers.edu> * Makefile.in (parse.o): Depend on $(CONFIG_H) and diff --git a/gcc/java/except.c b/gcc/java/except.c index 4628823..7c393be 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 77cd45e..55e6ef6 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 f6e77b0..cdc123d 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)); |