OSDN Git Service

Fix PR java/12739.
authorjsturm <jsturm@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 18 Nov 2003 03:42:30 +0000 (03:42 +0000)
committerjsturm <jsturm@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 18 Nov 2003 03:42:30 +0000 (03:42 +0000)
* java-tree.h (BLOCK_EMPTY_P): Define.
* parse.y (java_complete_lhs): Check for empty blocks
in TRY_FINALLY_EXPR case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73690 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/ChangeLog
gcc/java/java-tree.h
gcc/java/parse.y

index 301a4a7..995b21a 100644 (file)
@@ -1,4 +1,11 @@
-2003-09-12  Andrew Haley  <aph@redhat.com>
+2003-11-17  Jeff Sturm  <jsturm@one-point.com>
+
+       Fix PR java/12739.
+       * java-tree.h (BLOCK_EMPTY_P): Define.
+       * parse.y (java_complete_lhs): Check for empty blocks
+       in TRY_FINALLY_EXPR case.
+
+2003-11-17  Andrew Haley  <aph@redhat.com>
 
        * java-tree.h (LOCAL_VAR_OUT_OF_SCOPE_P): New.
        (struct lang_decl_var:freed): New variable. 
index 8c58bb7..eb0db48 100644 (file)
@@ -1731,6 +1731,8 @@ while (0)
 #define BLOCK_EXPR_BODY(NODE)   BLOCK_SUBBLOCKS(NODE)
 /* True for an implicit block surrounding declaration not at start of {...}. */
 #define BLOCK_IS_IMPLICIT(NODE) TREE_LANG_FLAG_1 (NODE)
+#define BLOCK_EMPTY_P(NODE) \
+  (TREE_CODE (NODE) == BLOCK && BLOCK_EXPR_BODY (NODE) == empty_stmt_node)
 
 #define BUILD_MONITOR_ENTER(WHERE, ARG)                                \
   {                                                            \
index 8a13e51..375e7ec 100644 (file)
@@ -11719,9 +11719,13 @@ java_complete_lhs (tree node)
     case TRY_FINALLY_EXPR:
       COMPLETE_CHECK_OP_0 (node);
       COMPLETE_CHECK_OP_1 (node);
-      if (TREE_OPERAND (node, 0) == empty_stmt_node)
+      /* Reduce try/finally nodes with an empty try block.  */
+      if (TREE_OPERAND (node, 0) == empty_stmt_node
+         || BLOCK_EMPTY_P (TREE_OPERAND (node, 0)))
        return TREE_OPERAND (node, 1);
-      if (TREE_OPERAND (node, 1) == empty_stmt_node)
+      /* Likewise for an empty finally block.  */
+      if (TREE_OPERAND (node, 1) == empty_stmt_node
+         || BLOCK_EMPTY_P (TREE_OPERAND (node, 1)))
        return TREE_OPERAND (node, 0);
       CAN_COMPLETE_NORMALLY (node)
        = (CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0))