aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Haley <aph@cygnus.com>1999-01-25 10:32:18 +0000
committerAndrew Haley <aph@gcc.gnu.org>1999-01-25 10:32:18 +0000
commit1b18747f2eb6c9aec887707c3d1bda47a28e304a (patch)
tree530b8265baf728fa4cde7e5d8aee4f0e9aa3a0d6 /gcc
parent3f7547f7c33e7f1f09fbe1f629ab408d5735607d (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/java/except.c9
-rw-r--r--gcc/java/expr.c11
-rw-r--r--gcc/java/java-except.h1
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));