Commit 6ad7895a by Alexandre Petit-Bianco Committed by Alexandre Petit-Bianco

*** empty log message ***

From-SVN: r44528
parent b24a9e88
2001-07-31 Alexandre Petit-Bianco <apbianco@redhat.com>
* expr.c (safe_from_p): Use WITH_CLEANUP_EXPR_RTL instead of
RTL_EXPR_RTL while handling WITH_CLEANUP_EXPR nodes. Fixed typo in
comment.
(expand_expr): Use WITH_CLEANUP_EXPR_RTL instead of RTL_EXPR_RTL
while handling WITH_CLEANUP_EXPR node. Use second operand calling
expand_decl_cleanup.
* tree.c (firt_rtl_op): The third operand of WITH_CLEANUP_EXPR is
the first RTX.
(simple_cst_equal): WITH_CLEANUP_EXPR node to use its second
operand while calling simple_cst_equal.
* tree.def (WITH_CLEANUP_EXPR): Switched operands: the second
operand is the cleanup expression, the third is the RTL_EXPR.
* tree.h (WITH_CLEANUP_EXPR_RTL): New macro.
2001-07-31 Jeff Sturm <jsturm@one-point.com> 2001-07-31 Jeff Sturm <jsturm@one-point.com>
* except.c (duplicate_eh_regions): Test n_array[i] for NULL. * except.c (duplicate_eh_regions): Test n_array[i] for NULL.
......
2001-07-31 Alexandre Petit-Bianco <apbianco@redhat.com>
* tree.c (cp_tree_equal): WITH_CLEANUP_EXPR node to use its second
operand while calling cp_tree_equal.
2001-07-31 Nathan Sidwell <nathan@codesourcery.com> 2001-07-31 Nathan Sidwell <nathan@codesourcery.com>
The 3.0 ABI no longer has vbase pointer fields. The 3.0 ABI no longer has vbase pointer fields.
......
...@@ -1958,7 +1958,7 @@ cp_tree_equal (t1, t2) ...@@ -1958,7 +1958,7 @@ cp_tree_equal (t1, t2)
cmp = cp_tree_equal (TREE_OPERAND (t1, 0), TREE_OPERAND (t2, 0)); cmp = cp_tree_equal (TREE_OPERAND (t1, 0), TREE_OPERAND (t2, 0));
if (cmp <= 0) if (cmp <= 0)
return cmp; return cmp;
return cp_tree_equal (TREE_OPERAND (t1, 2), TREE_OPERAND (t1, 2)); return cp_tree_equal (TREE_OPERAND (t1, 1), TREE_OPERAND (t1, 1));
case COMPONENT_REF: case COMPONENT_REF:
if (TREE_OPERAND (t1, 1) == TREE_OPERAND (t2, 1)) if (TREE_OPERAND (t1, 1) == TREE_OPERAND (t2, 1))
......
...@@ -5858,7 +5858,7 @@ safe_from_p (x, exp, top_p) ...@@ -5858,7 +5858,7 @@ safe_from_p (x, exp, top_p)
break; break;
case WITH_CLEANUP_EXPR: case WITH_CLEANUP_EXPR:
exp_rtl = RTL_EXPR_RTL (exp); exp_rtl = WITH_CLEANUP_EXPR_RTL (exp);
break; break;
case CLEANUP_POINT_EXPR: case CLEANUP_POINT_EXPR:
...@@ -6452,7 +6452,7 @@ expand_expr (exp, target, tmode, modifier) ...@@ -6452,7 +6452,7 @@ expand_expr (exp, target, tmode, modifier)
lineno = EXPR_WFL_LINENO (exp); lineno = EXPR_WFL_LINENO (exp);
if (EXPR_WFL_EMIT_LINE_NOTE (exp)) if (EXPR_WFL_EMIT_LINE_NOTE (exp))
emit_line_note (input_filename, lineno); emit_line_note (input_filename, lineno);
/* Possibly avoid switching back and force here. */ /* Possibly avoid switching back and forth here. */
to_return = expand_expr (EXPR_WFL_NODE (exp), target, tmode, modifier); to_return = expand_expr (EXPR_WFL_NODE (exp), target, tmode, modifier);
input_filename = saved_input_filename; input_filename = saved_input_filename;
lineno = saved_lineno; lineno = saved_lineno;
...@@ -7376,16 +7376,16 @@ expand_expr (exp, target, tmode, modifier) ...@@ -7376,16 +7376,16 @@ expand_expr (exp, target, tmode, modifier)
} }
case WITH_CLEANUP_EXPR: case WITH_CLEANUP_EXPR:
if (RTL_EXPR_RTL (exp) == 0) if (WITH_CLEANUP_EXPR_RTL (exp) == 0)
{ {
RTL_EXPR_RTL (exp) WITH_CLEANUP_EXPR_RTL (exp)
= expand_expr (TREE_OPERAND (exp, 0), target, tmode, ro_modifier); = expand_expr (TREE_OPERAND (exp, 0), target, tmode, ro_modifier);
expand_decl_cleanup (NULL_TREE, TREE_OPERAND (exp, 2)); expand_decl_cleanup (NULL_TREE, TREE_OPERAND (exp, 1));
/* That's it for this cleanup. */ /* That's it for this cleanup. */
TREE_OPERAND (exp, 2) = 0; TREE_OPERAND (exp, 1) = 0;
} }
return RTL_EXPR_RTL (exp); return WITH_CLEANUP_EXPR_RTL (exp);
case CLEANUP_POINT_EXPR: case CLEANUP_POINT_EXPR:
{ {
......
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> 2001-07-18 Alexandre Petit-Bianco <apbianco@redhat.com>
* parse.y (create_interface): Avoid cyclic inheritance report when * parse.y (create_interface): Avoid cyclic inheritance report when
......
...@@ -537,7 +537,7 @@ check_init (exp, before) ...@@ -537,7 +537,7 @@ check_init (exp, before)
#endif #endif
check_init (TREE_OPERAND (exp, 0), before); check_init (TREE_OPERAND (exp, 0), before);
UNION (alt->combined, alt->combined, before); UNION (alt->combined, alt->combined, before);
check_init (TREE_OPERAND (exp, 2), alt->combined); check_init (TREE_OPERAND (exp, 1), alt->combined);
return; return;
} }
......
...@@ -1738,7 +1738,7 @@ complete_start_java_method (fndecl) ...@@ -1738,7 +1738,7 @@ complete_start_java_method (fndecl)
tree function_body = DECL_FUNCTION_BODY (fndecl); tree function_body = DECL_FUNCTION_BODY (fndecl);
tree body = BLOCK_EXPR_BODY (function_body); tree body = BLOCK_EXPR_BODY (function_body);
lock = build (WITH_CLEANUP_EXPR, void_type_node, lock = build (WITH_CLEANUP_EXPR, void_type_node,
enter, NULL_TREE, exit); enter, exit, NULL_TREE);
TREE_SIDE_EFFECTS (lock) = 1; TREE_SIDE_EFFECTS (lock) = 1;
lock = build (COMPOUND_EXPR, TREE_TYPE (body), lock, body); lock = build (COMPOUND_EXPR, TREE_TYPE (body), lock, body);
TREE_SIDE_EFFECTS (lock) = 1; TREE_SIDE_EFFECTS (lock) = 1;
......
...@@ -2293,7 +2293,7 @@ generate_bytecode_insns (exp, target, state) ...@@ -2293,7 +2293,7 @@ generate_bytecode_insns (exp, target, state)
label->next = state->labeled_blocks; label->next = state->labeled_blocks;
state->labeled_blocks = label; state->labeled_blocks = label;
state->num_finalizers++; 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); label->v.start_label = get_jcf_label_here (state);
if (target != IGNORE_TARGET) if (target != IGNORE_TARGET)
abort (); abort ();
......
...@@ -11326,7 +11326,7 @@ java_complete_lhs (node) ...@@ -11326,7 +11326,7 @@ java_complete_lhs (node)
case WITH_CLEANUP_EXPR: case WITH_CLEANUP_EXPR:
COMPLETE_CHECK_OP_0 (node); COMPLETE_CHECK_OP_0 (node);
COMPLETE_CHECK_OP_2 (node); COMPLETE_CHECK_OP_1 (node);
CAN_COMPLETE_NORMALLY (node) = CAN_COMPLETE_NORMALLY (node) =
CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0)); CAN_COMPLETE_NORMALLY (TREE_OPERAND (node, 0));
TREE_TYPE (node) = void_type_node; TREE_TYPE (node) = void_type_node;
...@@ -15326,7 +15326,7 @@ patch_synchronized_statement (node, wfl_op1) ...@@ -15326,7 +15326,7 @@ patch_synchronized_statement (node, wfl_op1)
build (WITH_CLEANUP_EXPR, NULL_TREE, build (WITH_CLEANUP_EXPR, NULL_TREE,
build (COMPOUND_EXPR, NULL_TREE, build (COMPOUND_EXPR, NULL_TREE,
assignment, enter), assignment, enter),
NULL_TREE, exit), exit, NULL_TREE),
block)); block));
node = build_expr_block (node, expr_decl); node = build_expr_block (node, expr_decl);
......
...@@ -1628,8 +1628,7 @@ first_rtl_op (code) ...@@ -1628,8 +1628,7 @@ first_rtl_op (code)
case RTL_EXPR: case RTL_EXPR:
return 0; return 0;
case WITH_CLEANUP_EXPR: case WITH_CLEANUP_EXPR:
/* Should be defined to be 2. */ return 2;
return 1;
case METHOD_CALL_EXPR: case METHOD_CALL_EXPR:
return 3; return 3;
default: default:
...@@ -3679,7 +3678,7 @@ simple_cst_equal (t1, t2) ...@@ -3679,7 +3678,7 @@ simple_cst_equal (t1, t2)
if (cmp <= 0) if (cmp <= 0)
return cmp; return cmp;
return simple_cst_equal (TREE_OPERAND (t1, 2), TREE_OPERAND (t1, 2)); return simple_cst_equal (TREE_OPERAND (t1, 1), TREE_OPERAND (t1, 1));
case COMPONENT_REF: case COMPONENT_REF:
if (TREE_OPERAND (t1, 1) == TREE_OPERAND (t2, 1)) if (TREE_OPERAND (t1, 1) == TREE_OPERAND (t2, 1))
......
...@@ -472,8 +472,8 @@ DEFTREECODE (METHOD_CALL_EXPR, "method_call_expr", 'e', 4) ...@@ -472,8 +472,8 @@ DEFTREECODE (METHOD_CALL_EXPR, "method_call_expr", 'e', 4)
/* Specify a value to compute along with its corresponding cleanup. /* Specify a value to compute along with its corresponding cleanup.
Operand 0 argument is an expression whose value needs a cleanup. Operand 0 argument is an expression whose value needs a cleanup.
Operand 1 is an RTL_EXPR which will eventually represent that value. Operand 1 is the cleanup expression for the object.
Operand 2 is the cleanup expression for the object. Operand 2 is an RTL_EXPR which will eventually represent that value.
The RTL_EXPR is used in this expression, which is how the expression The RTL_EXPR is used in this expression, which is how the expression
manages to act on the proper value. manages to act on the proper value.
The cleanup is executed by the first enclosing CLEANUP_POINT_EXPR, if The cleanup is executed by the first enclosing CLEANUP_POINT_EXPR, if
......
...@@ -792,6 +792,10 @@ struct tree_vec ...@@ -792,6 +792,10 @@ struct tree_vec
#define RTL_EXPR_SEQUENCE(NODE) (*(struct rtx_def **) &EXPR_CHECK (NODE)->exp.operands[0]) #define RTL_EXPR_SEQUENCE(NODE) (*(struct rtx_def **) &EXPR_CHECK (NODE)->exp.operands[0])
#define RTL_EXPR_RTL(NODE) (*(struct rtx_def **) &EXPR_CHECK (NODE)->exp.operands[1]) #define RTL_EXPR_RTL(NODE) (*(struct rtx_def **) &EXPR_CHECK (NODE)->exp.operands[1])
/* In a WITH_CLEANUP_EXPR node. */
#define WITH_CLEANUP_EXPR_RTL(NODE) \
(*(struct rtx_def **) &EXPR_CHECK (NODE)->exp.operands[2])
/* In a CONSTRUCTOR node. */ /* In a CONSTRUCTOR node. */
#define CONSTRUCTOR_ELTS(NODE) TREE_OPERAND (NODE, 1) #define CONSTRUCTOR_ELTS(NODE) TREE_OPERAND (NODE, 1)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment