aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.h
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1998-02-16 04:52:31 +0000
committerJason Merrill <jason@gcc.gnu.org>1998-02-15 23:52:31 -0500
commitb7f6588dd26feb66e936f4a3817d28c8ea929fae (patch)
treea79a0fce1411246619cb9375b2e5e885167e3226 /gcc/tree.h
parentf75778a8d6315df5f100475fa2cd1bb0423d8019 (diff)
downloadgcc-b7f6588dd26feb66e936f4a3817d28c8ea929fae.zip
gcc-b7f6588dd26feb66e936f4a3817d28c8ea929fae.tar.gz
gcc-b7f6588dd26feb66e936f4a3817d28c8ea929fae.tar.bz2
tree.c (first_rtl_op): New fn.
* tree.c (first_rtl_op): New fn. (unsave_expr_now): Use it. * print-tree.c (print_node): Likewise. * tree.c (has_cleanups): New fn. * fold-const.c (fold, case CLEANUP_POINT_EXPR): Use it. Be more conservative about pushing the cleanup point down. * tree.h: Declare them. From-SVN: r18023
Diffstat (limited to 'gcc/tree.h')
-rw-r--r--gcc/tree.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/tree.h b/gcc/tree.h
index 093304a..39ec303 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -1490,6 +1490,11 @@ extern int lvalue_or_else PROTO((tree, char *));
extern tree save_expr PROTO((tree));
+/* Returns the index of the first non-tree operand for CODE, or the number
+ of operands if all are trees. */
+
+extern int first_rtl_op PROTO((enum tree_code));
+
/* unsave_expr (EXP) returns an expression equivalent to EXP but it
can be used multiple times and will evaluate EXP, in it's entirety
each time. */
@@ -1509,6 +1514,11 @@ extern tree unsave_expr_now PROTO((tree));
extern int contains_placeholder_p PROTO((tree));
+/* Return 1 if EXP contains any expressions that produce cleanups for an
+ outer scope to deal with. Used by fold. */
+
+extern int has_cleanups PROTO((tree));
+
/* Given a tree EXP, a FIELD_DECL F, and a replacement value R,
return a tree with all occurrences of references to F in a
PLACEHOLDER_EXPR replaced by R. Note that we assume here that EXP