Zdenek Dvorak wrote: > Hello, > > what exactly is the semantics of the cleanup for TARGET_EXPR? > Documentation says: > > >>Often, a @code{TARGET_EXPR} occurs on the right-hand side of an >>assignment, or as the second operand to a comma-expression which is >>itself the right-hand side of an assignment, etc. In this case, we say >>that the @code{TARGET_EXPR} is ``normal''; otherwise, we say it is >>``orphaned''. > > ... > >>If this expression is orphaned, then this expression must be executed >>when the statement containing this expression is complete. > > > What does "etc." in the definition of ``normal'' mean? Is say target_expr in > > a = b ? TARGET_EXPR : something; > > orphaned? If TARGET_EXPR is not orphaned, is it allowed to run its cleanup?
That should be considered a "normal" use, just like "a = TARGET_EXPR". In the abstract, the best thing might be for there to be a TARGET_EXPR around the entire COND_EXPR, but IIRC, the way it works is that there will be a TARGET_EXPR for each arm of the conditional. Here, the cleanups should not be run. However, if it were just "b ? TARGET_EXPR : something", then the cleanups should be run; that would be an orphaned use. -- Mark Mitchell CodeSourcery [EMAIL PROTECTED] (650) 331-3385 x713