This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
C++ PATCH for documentation on CLEANUP_POINT_EXPR
- To: gcc-patches at gcc dot gnu dot org
- Subject: C++ PATCH for documentation on CLEANUP_POINT_EXPR
- From: Mark Mitchell <mark at codesourcery dot com>
- Date: Thu, 07 Oct 1999 22:49:41 -0700
- Organization: CodeSourcery, LLC
Minor documentation improvements.
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com
1999-10-07 Mark Mitchell <mark@codesourcery.com>
* ir.texi: Improve documentation for STMT_EXPR. Describe
CLEANUP_POINT_EXPR.
Index: cp/ir.texi
===================================================================
RCS file: /egcs/carton/cvsfiles/egcs/gcc/cp/ir.texi,v
retrieving revision 1.16
diff -c -p -r1.16 ir.texi
*** ir.texi 1999/10/06 19:01:44 1.16
--- ir.texi 1999/10/08 05:35:36
*************** The @code{WHILE_BODY} is the body of the
*** 1475,1480 ****
--- 1475,1481 ----
@tindex BIND_EXPR
@tindex LOOP_EXPR
@tindex EXIT_EXPR
+ @tindex CLEANUP_POINT_EXPR
@tindex ARRAY_REF
The internal representation for expressions is for the most part quite
*************** expression would normally appear. The @
*** 1824,1830 ****
such an expression. The @code{STMT_EXPR_STMT} gives the statement
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
--- 1825,1843 ----
such an expression. The @code{STMT_EXPR_STMT} gives the statement
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}. More precisely, the value is the value computed
! by the last @code{EXPR_STMT} in the outermost scope of the
! @code{COMPOUND_STMT}. For example, in:
! @example
! (@{ 3; @})
! @end example
! the value is @code{3} while in:
! @example
! (@{ if (x) { 3; } @})
! @end example
! (represented by a nested @code{COMPOUND_STMT}), there is no value. If
! the @code{STMT_EXPR} does not yield a value, it's type will be
! @code{void}.
@item BIND_EXPR
These nodes represent local blocks. The first operand is a list of
*************** These nodes represent conditional exits
*** 1843,1848 ****
--- 1856,1867 ----
@code{LOOP_EXPR}. The single operand is the condition; if it is
non-zero, then the loop should be exited. An @code{EXIT_EXPR} will only
appear within a @code{LOOP_EXPR}.
+
+ @item CLEANUP_POINT_EXPR
+ These nodes represent full-expressions. The single oeprand is an
+ expression to evaluate. Any destructor calls engendered by the creation
+ of temporaries during the evaluation of that expression should be
+ performed immediately after the expression is evaluated.
@item CONSTRUCTOR
These nodes represent the brace-enclosed initializers for a structure or