* ir.texi: Document CLEANUP_STMT, SCOPE_STMT, and START_CATCH_STMT.

From-SVN: r29610
This commit is contained in:
Mark Mitchell 1999-09-23 02:10:55 +00:00 committed by Mark Mitchell
parent 5fdaba8942
commit 203a051fdd
2 changed files with 42 additions and 4 deletions

View File

@ -1,5 +1,7 @@
1999-09-22 Mark Mitchell <mark@codesourcery.com>
* ir.texi: Document CLEANUP_STMT, SCOPE_STMT, and START_CATCH_STMT.
* decl.c (pushdecl): Do create a binding for extern "C" functions,
but not for their DECL_ASSEMBLER_NAMEs.
(lookup_name_current_level): Fix formatting.

View File

@ -1011,6 +1011,9 @@ FIXME: Explain about constructor try-catch blocks.
@findex ASM_OUTPUTS
@findex ASM_CLOBBERS
@tindex BREAK_STMT
@tindex CLEANUP_STMT
@findex CLEANUP_DECL
@findex CLEANUP_EXPR
@tindex COMPOUND_STMT
@findex COMPOUND_BODY
@tindex CONTINUE_STMT
@ -1038,6 +1041,12 @@ FIXME: Explain about constructor try-catch blocks.
@tindex RETURN_INIT
@tindex RETURN_STMT
@findex RETURN_EXPR
@tindex SCOPE_STMT
@findex SCOPE_BEGIN_P
@findex SCOPE_END_P
@findex SCOPE_NULLIFIED_P
@tindex START_CATCH_STMT
@findex START_CATCH_TYPE
@tindex SUBOBJECT
@findex SUBOBJECT_CLEANUP
@tindex SWITCH_STMT
@ -1190,6 +1199,18 @@ case 2 ... 5:
The first value will be @code{CASE_LOW}, while the second will be
@code{CASE_HIGH}.
@item CLEANUP_STMT
Used to represent an action that should take place upon exit from the
enclosing scope. Typically, these actions are calls to destructors for
local objects, but back-ends cannot rely on this fact. If these nodes
are in fact representing such destructors, @code{CLEANUP_DECL} will be
the @code{VAR_DECL} destroyed. Otherwise, @code{CLEANUP_DECL} will be
@code{NULL_TREE}. In any case, the @code{CLEANUP_EXPR} is the
expression to execute. The cleanups executed on exit from a scope
should be run in the reverse order of the order in which the associated
@code{CLEANUP_STMT}s were encountered.
@item COMPOUND_STMT
Used to represent a brace-enclosed block. The first substatement is
@ -1266,6 +1287,24 @@ was just
return;
@end example
@item SCOPE_STMT
A scope-statement represents the beginning or end of a scope. If
@code{SCOPE_BEGIN_P} holds, this statement represents the beginning of a
scope; if @code{SCOPE_END_P} holds this statement represents the end of
a scope. On exit from a scope, all cleanups from @code{CLEANUP_STMT}s
occurring in the scope must be run, in reverse order to the order in
which they were encountered. If @code{SCOPE_NULLIFIED_P} holds of the
scope, back-ends should behave as if the @code{SCOPE_STMT} were not
present at all.
@item START_CATCH_STMT
These statements represent the location to which control is transferred
when an exception is thrown. The @code{START_CATCH_TYPE} is the type of
exception that will be caught by this handler; it is equal (by pointer
equalit) to @code{CATCH_ALL_TYPE} if this handler is for all types.
@item SUBOBJECT
In a constructor, these nodes are used to mark the point at which a
@ -1286,12 +1325,9 @@ Used to represent a @code{try} block. The body of the try block is
given by @code{TRY_STMTS}. Each of the catch blocks is a @code{HANDLER}
node. The first handler is given by @code{TRY_HANDLERS}. Subsequent
handlers are obtained by following the @code{TREE_CHAIN} link from one
handler to the next. The parameters for each handler are given by
@code{HANDLER_PARMS}. The body of the handler is given by
handler to the next. The body of the handler is given by
@code{HANDLER_BODY}.
FIXME: Document the use of @code{HANDLER_PARMS}.
If @code{CLEANUP_P} holds of the @code{TRY_BLOCK}, then the
@code{TRY_HANDLERS} will not be a @code{HANDLER} node. Instead, it will
be an expression that should be executed if an exception is thrown in