]> gcc.gnu.org Git - gcc.git/commitdiff
ir.texi: Improve documentation for TARGET_EXPRs.
authorMark Mitchell <mark@codesourcery.com>
Fri, 24 Sep 1999 01:43:49 +0000 (01:43 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Fri, 24 Sep 1999 01:43:49 +0000 (01:43 +0000)
* ir.texi: Improve documentation for TARGET_EXPRs.  Discuss
STMT_IS_FULL_EXPR_P.

From-SVN: r29647

gcc/cp/ChangeLog
gcc/cp/ir.texi

index 29aaa444e0f5a9537f2bd251b56c6f0226ba0997..216ecd01f2bf832ee0a21ff631d0e66df681dca1 100644 (file)
@@ -1,5 +1,8 @@
 1999-09-23  Mark Mitchell  <mark@codesourcery.com>
 
+       * ir.texi: Improve documentation for TARGET_EXPRs.  Discuss
+       STMT_IS_FULL_EXPR_P.
+
        * cp-tree.h (language_function): Add cannot_inline.
        * decl.c (start_function): Restore current_function_cannot_inline
        from the saved value.
index 3220a74762729ce046fc8faece6b5b3101ed4d35..e2b58e9e19b03a31cf58a6c08e4e02abc5da5cef 100644 (file)
@@ -1104,6 +1104,15 @@ as if it were a statement, they do not allow the use of
 Statements do not contain information about
 the file from which they came; that information is implicit in the
 @code{FUNCTION_DECL} from which the statements originate.
+
+@item STMT_IS_FULL_EXPR_P
+In C++, statements normally constitute ``full expressions''; temporaries
+created during a statement are destroyed when the statement is complete.
+However, G++ sometimes represents expressions by statements; these
+statements will not have @code{STMT_IS_FULL_EXPR_P} set.  Temporaries
+created during such statements should be destroyed when the innermost
+enclosing statement with @code{STMT_IS_FULL_EXPR_P} set is exited.
+
 @end ftable
 
 Here is the list of the various statement nodes, and the macros used to
@@ -1789,9 +1798,20 @@ is a @code{VAR_DECL} for the temporary variable.  The second operand is
 the initializer for the temporary.  The initializer is evaluated, and
 copied (bitwise) into the temporary.
 
-FIXME: Discuss cleanups for the variable.
-FIXME: Discuss the situation where the value is actually written into a
-different variable.
+The third operand to the @code{TARGET_EXPR}, if present, is a
+cleanup-expression (i.e., destructor call) for the temporary.  If this
+expression is not copied into some other location (i.e., if it is not
+the right-hand side of an assignment, or the second operand to a
+comma-expression which is itself the right-hand side of an assignment,
+etc.), then this expression must be executed when the statement
+containing this expression is complete.  These cleanups must always be
+executed in the order opposite to that in which they were encountered.
+Note that if a temporary is created on one branch of a conditional
+operator (i.e., in the second or third operand to a @code{COND_EXPR}),
+the cleanup must be run only if that branch is actually executed.
+
+See @code{STMT_IS_FULL_EXPR_P} for more information about running these
+cleanups.
 
 @item AGGR_INIT_EXPR
 An @code{AGGR_INIT_EXPR} represents the initialization as the return
This page took 0.08323 seconds and 5 git commands to generate.