summaryrefslogtreecommitdiff
path: root/gcc/tree.def
diff options
context:
space:
mode:
authorMike Stump <mrs@gcc.gnu.org>1996-05-17 21:48:14 +0000
committerMike Stump <mrs@gcc.gnu.org>1996-05-17 21:48:14 +0000
commit4847c9386bfbaf333a36d7086c74a4b29f3b1461 (patch)
treed45ed9209ff2030610011f8365b79f5db25beac6 /gcc/tree.def
parent3cd456066e16f812b16ea0095bc392adbb94fa8f (diff)
downloadgcc-4847c9386bfbaf333a36d7086c74a4b29f3b1461.tar.gz
expr.c (expand_expr, [...]): Make TARGET_EXPRs redoable for UNSAVE_EXPR.
* 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
Diffstat (limited to 'gcc/tree.def')
-rw-r--r--gcc/tree.def4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree.def b/gcc/tree.def
index 61f06a94a68..2b7088351f2 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -406,7 +406,9 @@ DEFTREECODE (INIT_EXPR, "init_expr", "e", 2)
/* For TARGET_EXPR, operand 0 is the target of an initialization,
operand 1 is the initializer for the target,
- and operand 2 is the cleanup for this node, if any. */
+ and operand 2 is the cleanup for this node, if any.
+ and operand 3 is the saved initializer after this node has been
+ expanded once, this is so we can re-expand the tree later. */
DEFTREECODE (TARGET_EXPR, "target_expr", "e", 3)
/* Conditional expression ( ... ? ... : ... in C).