diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-11-27 14:31:29 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-11-27 14:31:29 +0000 |
commit | b3187c7c505e8cf33bbc544e5841787a08ecb7a5 (patch) | |
tree | df8e146fbd8a8ed512495c0e24ff0baaa409303d /gcc/langhooks.h | |
parent | 7f9adb18c9a3d659023c0d8aa519d8e3d60910c0 (diff) | |
download | gcc-b3187c7c505e8cf33bbc544e5841787a08ecb7a5.tar.gz |
* Makefile.in (c-lang.o): Depends on langhooks-def.h.
(expr.o, varasm.o): Depends on langhooks.h.
* c-common.c (c_safe_from_p): Always declare.
(c_expand_expr): Refine when declared.
* c-lang.c (c-common.h): Now include.
(LANG_HOOKS_SAFE_FROM_P): Define new hook.
(c_init): Don't set lang_safe_from_expr.
* expr.c (langhooks.h): Now include.
(lang_safe_from_p): No longer define.
(safe_from_p): Use lang hook.
(expand_expr): Set IGNORE if VOID_TYPE result of VIEW_CONVERT_EXPR too.
(expand_expr, case VIEW_CONVERT_EXPR): Pass ro_modifier down.
* expr.h (lang_expand_constant, lang_safe_from_p): Delete.
* langhooks-def.h (lhd_return_tree, lhd_safe_from_p): New decls.
(LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
* langhooks.c (lhd_return_tree, lhd_safe_from_p): New functions.
* langhooks.h (struct lang_hooks): New fields expand_constant
and safe_from_p.
* output.h (output_constant): Size arg is HOST_WIDE_INT.
* stmt.c (expand_decl_init): No longer need to expand constant
for CONST_DECL.
* stor-layout.c (put_pending_size): Don't check for SAVE_EXPR.
* toplev.c (lang_expand_constant): Delete var.
* tree.c (save_expr): Don't put another SAVE_EXPR around simple
operations on SAVE_EXPR.
* varasm.c (langhooks.h): Now include.
(compare_constant_1): Use lang_hooks, not lang_expand_constant.
(record_constant_1, output_addressed_constants): Likewise.
(initializer_constant_valid_p, output_constant): Likewise.
(output_constant_def): Process no-defer of string constant.
(output_addressed_constants, case ADDR_EXPR): Use handled_component_p.
(output_constant): Strip more conversions.
Track our size and pad for the rest.
(array_size_for_constructor): Remove code for non-byte STRING_CST.
(output_constructor): SIZE now HOST_WIDE_INT.
* cp/Make-lang.in (cp-lang.o): Depends on c-common.h.
* cp/cp-lang.c (c-common.h): Include.
(LANG_HOOKS_EXPAND_CONSTANT, LANG_HOOKS_SAFE_FROM_P): New hooks.
* cp/decl.c (cxx_init_decl_processing): Don't set lang_safe_from_p.
* cp/expr.c (init_cplus_expand): Don't set lang_expand_constant.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47376 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/langhooks.h')
-rw-r--r-- | gcc/langhooks.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/langhooks.h b/gcc/langhooks.h index befdb0f6838..0519d21bbfe 100644 --- a/gcc/langhooks.h +++ b/gcc/langhooks.h @@ -109,6 +109,20 @@ struct lang_hooks Returns -1 if the language does nothing special for it. */ HOST_WIDE_INT (*get_alias_set) PARAMS ((tree)); + /* Called with an expression that is to be processed as a constant. + Returns either the same expression or a language-independent + constant equivalent to its input. */ + tree (*expand_constant) PARAMS ((tree)); + + /* Hook called by safe_from_p for language-specific tree codes. It is + up to the language front-end to install a hook if it has any such + codes that safe_from_p needs to know about. Since same_from_p will + recursively explore the TREE_OPERANDs of an expression, this hook + should not reexamine those pieces. This routine may recursively + call safe_from_p; it should always pass `0' as the TOP_P + parameter. */ + int (*safe_from_p) PARAMS ((rtx, tree)); + /* Nonzero if TYPE_READONLY and TREE_READONLY should always be honored. */ bool honor_readonly; |