diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-02-16 04:52:31 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-02-16 04:52:31 +0000 |
commit | bc280274b0d7aeadddb1628b38e35c6c80a442db (patch) | |
tree | a79a0fce1411246619cb9375b2e5e885167e3226 /gcc/tree.h | |
parent | a72a514c227b898fe8281d8f57fec0ec2dfd2435 (diff) | |
download | gcc-bc280274b0d7aeadddb1628b38e35c6c80a442db.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@18023 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/tree.h b/gcc/tree.h index 093304ab04e..39ec3033055 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 |