* ir.texi: Document BIND_EXPR, LOOP_EXPR, and EXIT_EXPR.
* dump.c (dequeue_and_dump): Dump them.
From-SVN: r29835
1999-10-05 Mark Mitchell <mark@codesourcery.com>
- * ir.texi: Document LOOP_EXPR and EXIT_EXPR.
-
+ * ir.texi: Document BIND_EXPR, LOOP_EXPR, and EXIT_EXPR.
+ * dump.c (dequeue_and_dump): Dump them.
+
* method.c (synthesize_method): Call setup_vtbl_ptr for destructors.
* decl.c (start_function): Set current_in_charge_parm for
dump_child ("stmt", STMT_EXPR_STMT (t));
break;
+ case BIND_EXPR:
+ if (dump_children_p)
+ {
+ dump_child ("vars", TREE_OPERAND (t, 0));
+ dump_child ("body", TREE_OPERAND (t, 1));
+ }
+ break;
+
+ case LOOP_EXPR:
+ if (dump_children_p)
+ dump_child ("body", TREE_OPERAND (t, 0));
+ break;
+
+ case EXIT_EXPR:
+ if (dump_children_p)
+ dump_child ("cond", TREE_OPERAND (t, 0));
+ break;
+
case TARGET_EXPR:
if (dump_children_p)
{
@tindex CALL_EXPR
@tindex CONSTRUCTOR
@tindex STMT_EXPR
+@tindex BIND_EXPR
@tindex LOOP_EXPR
@tindex EXIT_EXPR
@tindex ARRAY_REF
value of the expression is the value of the last sub-statement in the
@code{COMPOUND_STMT}.
+@item BIND_EXPR
+These nodes represent local blocks. The first operand is a list of
+temporary variables, connected via their @code{TREE_CHAIN} field. These
+will never require cleanups. The scope of these variables is just the
+body of the @code{BIND_EXPR}. The body of the @code{BIND_EXPR} is the
+second operand.
+
@item LOOP_EXPR
These nodes represent ``infinite'' loops. The @code{LOOP_EXPR_BODY}
represents the body of the loop. It should be executed forever, unless