aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog13
-rw-r--r--gcc/java/check-init.c2
-rw-r--r--gcc/java/decl.c2
-rw-r--r--gcc/java/jcf-write.c2
-rw-r--r--gcc/java/parse.y4
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);