From d179df437926af00080bf7fd37acb91a3691c75f Mon Sep 17 00:00:00 2001
From: tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Fri, 29 Mar 2002 00:42:54 +0000
Subject: [PATCH] 	* except.c (expand_end_java_handler): If the handler
 type is NULL, 	use java.lang.Throwable.  Fixes PR java/5986.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51539 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/java/ChangeLog |  5 +++++
 gcc/java/except.c  | 14 ++++++++++++--
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index c1206c46c122..21be2063c834 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2002-03-28  Tom Tromey  <tromey@redhat.com>
+
+	* except.c (expand_end_java_handler): If the handler type is NULL,
+	use java.lang.Throwable.  Fixes PR java/5986.
+
 2002-03-28  Alexandre Petit-Bianco  <apbianco@redhat.com>
 
 	Fix for PR java/4715:
diff --git a/gcc/java/except.c b/gcc/java/except.c
index 184f7e5a88be..5b315185807a 100644
--- a/gcc/java/except.c
+++ b/gcc/java/except.c
@@ -1,5 +1,5 @@
 /* Handle exceptions for GNU compiler for the Java(TM) language.
-   Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
 
 This file is part of GNU CC.
 
@@ -372,7 +372,17 @@ expand_end_java_handler (range)
   expand_start_all_catch ();
   for ( ; handler != NULL_TREE; handler = TREE_CHAIN (handler))
     {
-      expand_start_catch (TREE_PURPOSE (handler));
+      /* For bytecode we treat exceptions a little unusually.  A
+	 `finally' clause looks like an ordinary exception handler for
+	 Throwable.  The reason for this is that the bytecode has
+	 already expanded the finally logic, and we would have to do
+	 extra (and difficult) work to get this to look like a
+	 gcc-style finally clause.  */
+      tree type = TREE_PURPOSE (handler);
+      if (type == NULL)
+	type = throwable_type_node;
+
+      expand_start_catch (type);
       expand_goto (TREE_VALUE (handler));
       expand_end_catch ();
     }
-- 
GitLab