diff options
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 13 | ||||
-rw-r--r-- | gcc/java/check-init.c | 2 | ||||
-rw-r--r-- | gcc/java/decl.c | 2 | ||||
-rw-r--r-- | gcc/java/jcf-write.c | 2 | ||||
-rw-r--r-- | gcc/java/parse.y | 4 |
5 files changed, 18 insertions, 5 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index a694743..69f5705 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,16 @@ +2001-07-31 Alexandre Petit-Bianco <apbianco@redhat.com> + + * check-init.c (check_init): WITH_CLEANUP_EXPR node to use its + second operand calling check_init. + * decl.c (complete_start_java_method): Swaped second and third + arguments while creating WITH_CLEANUP_EXPR node. + * jcf-write.c (generate_bytecode_insns): Use second operand + instead of third when handling WITH_CLEANUP_EXPR. + * parse.y (java_complete_lhs): Expand second operand of + WITH_CLEANUP_EXPR nodes. + (patch_synchronized_statement): Swaped second and third arguments + while creating WITH_CLEANUP_EXPR node. + 2001-07-18 Alexandre Petit-Bianco <apbianco@redhat.com> * parse.y (create_interface): Avoid cyclic inheritance report when diff --git a/gcc/java/check-init.c b/gcc/java/check-init.c index 05e3aa3..0e340dd 100644 --- a/gcc/java/check-init.c +++ b/gcc/java/check-init.c @@ -537,7 +537,7 @@ check_init (exp, before) #endif check_init (TREE_OPERAND (exp, 0), before); UNION (alt->combined, alt->combined, before); - check_init (TREE_OPERAND (exp, 2), alt->combined); + check_init (TREE_OPERAND (exp, 1), alt->combined); return; } diff --git a/gcc/java/decl.c b/gcc/java/decl.c index 1e8c934..3b856db 100644 --- a/gcc/java/decl.c +++ b/gcc/java/decl.c @@ -1738,7 +1738,7 @@ complete_start_java_method (fndecl) tree function_body = DECL_FUNCTION_BODY (fndecl); tree body = BLOCK_EXPR_BODY (function_body); lock = build (WITH_CLEANUP_EXPR, void_type_node, - enter, NULL_TREE, exit); + enter, exit, NULL_TREE); TREE_SIDE_EFFECTS (lock) = 1; lock = build (COMPOUND_EXPR, TREE_TYPE (body), lock, body); TREE_SIDE_EFFECTS (lock) = 1; diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c index 9a4eb5b..ca453c8 100644 --- a/gcc/java/jcf-write.c +++ b/gcc/java/jcf-write.c @@ -2293,7 +2293,7 @@ generate_bytecode_insns (exp, target, state) label->next = state->labeled_blocks; state->labeled_blocks = label; state->num_finalizers++; - label->u.labeled_block = TREE_OPERAND (exp, 2); + label->u.labeled_block = TREE_OPERAND (exp, 1); label->v.start_label = get_jcf_label_here (state); if (target != IGNORE_TARGET) abort (); diff --git a/gcc/java/parse.y b/gcc/java/parse.y index 1fb08bc..05be633 100644 --- a/gcc/java/parse.y +++ b/gcc/java/parse.y @@ -11326,7 +11326,7 @@ java_complete_lhs (node) case WITH_CLEANUP_EXPR: COMPLETE_CHECK_OP_0 (node); - COMPLETE_CHECK_OP_2 (node); + COMPLETE_CHECK_OP_1 (node); CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0)); TREE_TYPE (node) = void_type_node; @@ -15326,7 +15326,7 @@ patch_synchronized_statement (node, wfl_op1) build (WITH_CLEANUP_EXPR, NULL_TREE, build (COMPOUND_EXPR, NULL_TREE, assignment, enter), - NULL_TREE, exit), + exit, NULL_TREE), block)); node = build_expr_block (node, expr_decl); |