diff options
author | Richard Henderson <rth@cygnus.com> | 2000-03-24 17:06:35 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-03-24 17:06:35 -0800 |
commit | 194c7c45b14098d8ed488e57d9d37e3b290ee4cd (patch) | |
tree | 9ebdd42ff7f81a59b06dea0e7f79c96c34249f4b /gcc/tree.h | |
parent | 1c33f70c9679c08daf29d6911240ff7b9da94ee0 (diff) | |
download | gcc-194c7c45b14098d8ed488e57d9d37e3b290ee4cd.zip gcc-194c7c45b14098d8ed488e57d9d37e3b290ee4cd.tar.gz gcc-194c7c45b14098d8ed488e57d9d37e3b290ee4cd.tar.bz2 |
tree.c (lang_safe_for_unsave): Remove.
* tree.c (lang_safe_for_unsave): Remove.
(unsafe_for_reeval): Transmute and rename from safe_for_unsave,
allowing for two levels of unsafeness. Remove lang hook.
* tree.h: Update declarations.
* calls.c (expand_call): Rename safe_for_reeval to try_tail_call.
Create temporary VAR_DECLs to protect very unsafe_for_reeval trees.
Always fail sibcalls when there are pending cleanups.
From-SVN: r32735
Diffstat (limited to 'gcc/tree.h')
-rw-r--r-- | gcc/tree.h | 10 |
1 files changed, 4 insertions, 6 deletions
@@ -1963,12 +1963,10 @@ extern tree unsave_expr_now PARAMS ((tree)); extern void (*lang_unsave) PARAMS ((tree *)); extern void (*lang_unsave_expr_now) PARAMS ((tree)); -/* If non-null, a language specific version of safe_for_unsave. */ -extern int (*lang_safe_for_unsave) PARAMS ((tree)); - -/* Return nonzero if it is safe to unsave EXPR, else return zero. - It is not safe to unsave EXPR if it contains any embedded RTL_EXPRs. */ -extern int safe_for_unsave PARAMS ((tree)); +/* Return 0 if it is safe to evaluate EXPR multiple times, + return 1 if it is safe if EXPR is unsaved afterward, or + return 2 if it is completely unsafe. */ +extern int unsafe_for_reeval PARAMS ((tree)); /* Return 1 if EXP contains a PLACEHOLDER_EXPR; i.e., if it represents a size or offset that depends on a field within a record. |