aboutsummaryrefslogtreecommitdiff
path: root/gcc/java/parse.y
diff options
context:
space:
mode:
authorPer Bothner <per@bothner.com>2001-10-11 16:50:49 -0700
committerPer Bothner <bothner@gcc.gnu.org>2001-10-11 16:50:49 -0700
commit89b894e19b9297d4d7e2f85c33253c59356a48b1 (patch)
tree9837bfb596fefc897129f0b0c0659bf932161e23 /gcc/java/parse.y
parent9e2b96271da2e46088221b201054383643ae935b (diff)
downloadgcc-89b894e19b9297d4d7e2f85c33253c59356a48b1.zip
gcc-89b894e19b9297d4d7e2f85c33253c59356a48b1.tar.gz
gcc-89b894e19b9297d4d7e2f85c33253c59356a48b1.tar.bz2
parse.y (patch_synchronized_statement): Use a TRY_FINALLY_EXPR rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair.
* parse.y (patch_synchronized_statement): Use a TRY_FINALLY_EXPR rather than a CLEANUP_POINT_EXPR/WITH_CLEANUP_EXPR pair. The former is simpler, and jcf-write.c handles it better. (java_complete_lhs): No longer need to handle CLEANUP_POINT_EXPR or WITH_CLEANUP_EXPR. * jcf-write.c: Revert Alex's change from 2000-10-18. It is no longer needed, as we already handle empty TRY_FINALLY_EXPR bodies fine. From-SVN: r46209
Diffstat (limited to 'gcc/java/parse.y')
-rw-r--r--gcc/java/parse.y25
1 files changed, 3 insertions, 22 deletions
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index a5c9867..f699c5d 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -11582,21 +11582,6 @@ java_complete_lhs (node)
TREE_TYPE (node) = TREE_TYPE (TREE_OPERAND (node, 0));
return node;
- case CLEANUP_POINT_EXPR:
- COMPLETE_CHECK_OP_0 (node);
- TREE_TYPE (node) = void_type_node;
- CAN_COMPLETE_NORMALLY (node) =
- CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
- return node;
-
- case WITH_CLEANUP_EXPR:
- COMPLETE_CHECK_OP_0 (node);
- COMPLETE_CHECK_OP_1 (node);
- CAN_COMPLETE_NORMALLY (node) =
- CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
- TREE_TYPE (node) = void_type_node;
- return node;
-
case LABELED_BLOCK_EXPR:
PUSH_LABELED_BLOCK (node);
if (LABELED_BLOCK_BODY (node))
@@ -15690,13 +15675,9 @@ patch_synchronized_statement (node, wfl_op1)
CAN_COMPLETE_NORMALLY (exit) = 1;
assignment = build (MODIFY_EXPR, NULL_TREE, expr_decl, expr);
TREE_SIDE_EFFECTS (assignment) = 1;
- node = build1 (CLEANUP_POINT_EXPR, NULL_TREE,
- build (COMPOUND_EXPR, NULL_TREE,
- build (WITH_CLEANUP_EXPR, NULL_TREE,
- build (COMPOUND_EXPR, NULL_TREE,
- assignment, enter),
- exit, NULL_TREE),
- block));
+ node = build (COMPOUND_EXPR, NULL_TREE,
+ build (COMPOUND_EXPR, NULL_TREE, assignment, enter),
+ build (TRY_FINALLY_EXPR, NULL_TREE, block, exit));
node = build_expr_block (node, expr_decl);
return java_complete_tree (node);