aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.def
diff options
context:
space:
mode:
authorMike Stump <mrs@gcc.gnu.org>1996-05-17 20:13:01 +0000
committerMike Stump <mrs@gcc.gnu.org>1996-05-17 20:13:01 +0000
commit679163cf4d5b714dde664c4124be0e0ececf86e0 (patch)
tree984e0626a1a5e2e8f7ff306f11134448208ba86c /gcc/tree.def
parent520e7ff5c74212d49b6b88b6808565300082691c (diff)
downloadgcc-679163cf4d5b714dde664c4124be0e0ececf86e0.zip
gcc-679163cf4d5b714dde664c4124be0e0ececf86e0.tar.gz
gcc-679163cf4d5b714dde664c4124be0e0ececf86e0.tar.bz2
expr.c (expand_expr, [...]): Move from the C++ frontend to the backend where it belongs.
* 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
Diffstat (limited to 'gcc/tree.def')
-rw-r--r--gcc/tree.def9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/tree.def b/gcc/tree.def
index 9de2ca0..61f06a9 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -646,6 +646,15 @@ DEFTREECODE (NON_LVALUE_EXPR, "non_lvalue_expr", "1", 1)
nonzero only after the expression has been computed. */
DEFTREECODE (SAVE_EXPR, "save_expr", "e", 3)
+/* For a UNSAVE_EXPR, operand 0 is the value to unsave. By unsave, we
+ mean that all _EXPRs such as TARGET_EXPRs, SAVE_EXPRs,
+ CALL_EXPRs and RTL_EXPRs, that are protected
+ from being evaluated more than once should be reset so that a new
+ expand_expr call of this expr will cause those to be re-evaluated.
+ This is useful when we want to reuse a tree in different places,
+ but where we must re-expand. */
+DEFTREECODE (UNSAVE_EXPR, "unsave_expr", "e", 1)
+
/* Represents something whose RTL has already been expanded
as a sequence which should be emitted when this expression is expanded.
The first operand is the RTL to emit. It is the first of a chain of insns.