* expr.c (expand_expr, cond TARGET_EXPR): Make TARGET_EXPRs
redoable for UNSAVE_EXPR.
* stmt.c (expand_decl_cleanup): Wrap the cleanup in an UNSAVE_EXPR
to that we can redo it.
* tree.c (unsave_expr_now): Handle TARGET_EXPRs fully now.
* tree.def (TARGET_EXPR): Add a third field so that TARGET_EXPRs
are redoable.
From-SVN: r12018
* expr.c (expand_expr, cond UNSAVE_EXPR): Move from the C++
frontend to the backend where it belongs.
* tree.c (unsave_expr): Ditto.
(unsave_expr_now): Ditto.
* tree.def (UNSAVE_EXPR): Ditto.
* tree.h (unsave_expr): Ditto.
(unsave_expr_now): Ditto.
From-SVN: r12015
* calls.c (expand_call): Only destroy temporaries at the end
of function calls, if flag_short_temps is set.
* expr.c (safe_from_p, expand_expr): Handle CLEANUP_POINT_EXPRs.
* expr.c (expand_expr): Improve handling of temporaries inside
COND_EXPRs, cures call to sorry.
* expr.c (defer_cleanups_to): New routine to handle the deferral
of cleanups.
* flags.h (flag_short_temps): New flag, to allow better control
over the lifetime of temporaries.
* toplev.c (flag_short_temps, lang_options): Ditto.
* tree.def (CLEANUP_POINT_EXPR): Add, to allow better control over
the lifetime of temporaries.
From-SVN: r7289