diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4eccf5e39a7..ffd457db5b1 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,7 +1,8 @@ 1999-10-05 Mark Mitchell - * 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 diff --git a/gcc/cp/dump.c b/gcc/cp/dump.c index 00d9e18f558..f6e15390f7f 100644 --- a/gcc/cp/dump.c +++ b/gcc/cp/dump.c @@ -903,6 +903,24 @@ dequeue_and_dump (di) 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) { diff --git a/gcc/cp/ir.texi b/gcc/cp/ir.texi index bad2aca7deb..021c679a9d4 100644 --- a/gcc/cp/ir.texi +++ b/gcc/cp/ir.texi @@ -1466,6 +1466,7 @@ The @code{WHILE_BODY} is the body of the loop. @tindex CALL_EXPR @tindex CONSTRUCTOR @tindex STMT_EXPR +@tindex BIND_EXPR @tindex LOOP_EXPR @tindex EXIT_EXPR @tindex ARRAY_REF @@ -1819,6 +1820,13 @@ contained in the expression; this is always a @code{COMPOUND_STMT}. The 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