Commit b03e38e1 by Neil Booth Committed by Neil Booth

Makefile.in: Update.

	* Makefile.in: Update.
	* decl.c (push_c_function_context, pop_c_function_context,
	mark_c_function_context): Rename for consistency.
	* c-objc-common.c (c_objc_common_init): Langhooks set elsewhere.
	* c-tree.h (push_c_function_context, pop_c_function_context,
	mark_c_function_context): Rename for consistency.
	* c-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.
	* function.c (init_lang_status, save_lang_status,
	restore_lang_status, mark_lang_status, free_lang_status):
	Move to langhooks.h.
	(push_function_context_to, pop_function_context_from,
	free_after_parsing, prepare_function_start, ggc_mark_struct_function):
	Update.
	* function.h (init_lang_status, save_lang_status,
	restore_lang_status, mark_lang_status, free_lang_status):
	Move to langhooks.h.
	* langhooks-def.h (LANG_HOOKS_FUNCTION_INIT,
	LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK,
	LANG_HOOKS_FUNCTION_INITIALIZER): New.
	(LANG_HOOKS_INITIALIZER): Update.
	(lhd_do_nothing_f): New.
	* langhooks.h (struct lang_hooks_for_functions): New.
	(struct lang_hooks): New hooks.
	* langhooks.c (lhd_do_nothing_f): New.
cp:
	* cp-lang.c (LANG_HOOKS_FUNCTION_INIT,
	LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_MARK): Redefine.
	* cp-tree.h (cxx_push_function_context, cxx_pop_function_context,
	cxx_mark_function_context): New.
	* decl.c (push_cp_function_context, pop_cp_function_context,
	mark_cp_function_context): Rename for consistency.
	(cxx_init_decl_processing): Don't set old hooks.
objc:
	* objc-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.

From-SVN: r52551
parent c874e8a3
2002-04-20 Neil Booth <neil@daikokuya.demon.co.uk>
* Makefile.in: Update.
* decl.c (push_c_function_context, pop_c_function_context,
mark_c_function_context): Rename for consistency.
* c-objc-common.c (c_objc_common_init): Langhooks set elsewhere.
* c-tree.h (push_c_function_context, pop_c_function_context,
mark_c_function_context): Rename for consistency.
* c-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.
* function.c (init_lang_status, save_lang_status,
restore_lang_status, mark_lang_status, free_lang_status):
Move to langhooks.h.
(push_function_context_to, pop_function_context_from,
free_after_parsing, prepare_function_start, ggc_mark_struct_function):
Update.
* function.h (init_lang_status, save_lang_status,
restore_lang_status, mark_lang_status, free_lang_status):
Move to langhooks.h.
* langhooks-def.h (LANG_HOOKS_FUNCTION_INIT,
LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_ENTER_NESTED,
LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK,
LANG_HOOKS_FUNCTION_INITIALIZER): New.
(LANG_HOOKS_INITIALIZER): Update.
(lhd_do_nothing_f): New.
* langhooks.h (struct lang_hooks_for_functions): New.
(struct lang_hooks): New hooks.
* langhooks.c (lhd_do_nothing_f): New.
objc:
* objc-lang.c (LANG_HOOKS_FUNCTION_ENTER_NESTED,
LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_FUNCTION_MARK): Redefine.
2002-04-19 David S. Miller <davem@redhat.com> 2002-04-19 David S. Miller <davem@redhat.com>
* config/sparc/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Define. * config/sparc/linux.h (MD_FALLBACK_FRAME_STATE_FOR): Define.
......
...@@ -1154,9 +1154,9 @@ c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) $(C_TREE_H) \ ...@@ -1154,9 +1154,9 @@ c-decl.o : c-decl.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) $(C_TREE_H) \
c-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ c-typeck.o : c-typeck.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
$(TARGET_H) flags.h intl.h output.h $(EXPR_H) $(RTL_H) toplev.h $(TM_P_H) $(TARGET_H) flags.h intl.h output.h $(EXPR_H) $(RTL_H) toplev.h $(TM_P_H)
c-lang.o : c-lang.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \ c-lang.o : c-lang.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(C_TREE_H) \
langhooks.h langhooks-def.h langhooks.h langhooks-def.h c-common.h
c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) c-lex.h \ c-lex.o : c-lex.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) c-lex.h \
debug.h $(C_TREE_H) \ debug.h $(C_TREE_H) c-common.h \
c-pragma.h input.h intl.h flags.h toplev.h output.h \ c-pragma.h input.h intl.h flags.h toplev.h output.h \
mbchar.h $(CPPLIB_H) $(EXPR_H) $(TM_P_H) mbchar.h $(CPPLIB_H) $(EXPR_H) $(TM_P_H)
c-objc-common.o : c-objc-common.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \ c-objc-common.o : c-objc-common.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
......
...@@ -6712,7 +6712,7 @@ finish_function (nested, can_defer_p) ...@@ -6712,7 +6712,7 @@ finish_function (nested, can_defer_p)
/* Let the error reporting routines know that we're outside a /* Let the error reporting routines know that we're outside a
function. For a nested function, this value is used in function. For a nested function, this value is used in
pop_c_function_context and then reset via pop_function_context. */ c_pop_function_context and then reset via pop_function_context. */
current_function_decl = NULL; current_function_decl = NULL;
} }
} }
...@@ -6887,7 +6887,7 @@ c_expand_body (fndecl, nested_p, can_defer_p) ...@@ -6887,7 +6887,7 @@ c_expand_body (fndecl, nested_p, can_defer_p)
/* Stop pointing to the local nodes about to be freed. /* Stop pointing to the local nodes about to be freed.
But DECL_INITIAL must remain nonzero so we know this But DECL_INITIAL must remain nonzero so we know this
was an actual function definition. was an actual function definition.
For a nested function, this is done in pop_c_function_context. For a nested function, this is done in c_pop_function_context.
If rest_of_compilation set this to 0, leave it 0. */ If rest_of_compilation set this to 0, leave it 0. */
if (DECL_INITIAL (fndecl) != 0) if (DECL_INITIAL (fndecl) != 0)
DECL_INITIAL (fndecl) = error_mark_node; DECL_INITIAL (fndecl) = error_mark_node;
...@@ -6998,7 +6998,7 @@ struct c_language_function ...@@ -6998,7 +6998,7 @@ struct c_language_function
used during compilation of a C function. */ used during compilation of a C function. */
void void
push_c_function_context (f) c_push_function_context (f)
struct function *f; struct function *f;
{ {
struct c_language_function *p; struct c_language_function *p;
...@@ -7021,7 +7021,7 @@ push_c_function_context (f) ...@@ -7021,7 +7021,7 @@ push_c_function_context (f)
/* Restore the variables used during compilation of a C function. */ /* Restore the variables used during compilation of a C function. */
void void
pop_c_function_context (f) c_pop_function_context (f)
struct function *f; struct function *f;
{ {
struct c_language_function *p struct c_language_function *p
...@@ -7062,7 +7062,7 @@ pop_c_function_context (f) ...@@ -7062,7 +7062,7 @@ pop_c_function_context (f)
/* Mark the language specific parts of F for GC. */ /* Mark the language specific parts of F for GC. */
void void
mark_c_function_context (f) c_mark_function_context (f)
struct function *f; struct function *f;
{ {
struct c_language_function *p struct c_language_function *p
......
...@@ -74,6 +74,12 @@ static void c_post_options PARAMS ((void)); ...@@ -74,6 +74,12 @@ static void c_post_options PARAMS ((void));
#define LANG_HOOKS_PRINT_IDENTIFIER c_print_identifier #define LANG_HOOKS_PRINT_IDENTIFIER c_print_identifier
#undef LANG_HOOKS_SET_YYDEBUG #undef LANG_HOOKS_SET_YYDEBUG
#define LANG_HOOKS_SET_YYDEBUG c_set_yydebug #define LANG_HOOKS_SET_YYDEBUG c_set_yydebug
#undef LANG_HOOKS_FUNCTION_ENTER_NESTED
#define LANG_HOOKS_FUNCTION_ENTER_NESTED c_push_function_context
#undef LANG_HOOKS_FUNCTION_LEAVE_NESTED
#define LANG_HOOKS_FUNCTION_LEAVE_NESTED c_pop_function_context
#undef LANG_HOOKS_FUNCTION_MARK
#define LANG_HOOKS_FUNCTION_MARK c_mark_function_context
#undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL #undef LANG_HOOKS_DUP_LANG_SPECIFIC_DECL
#define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL c_dup_lang_specific_decl #define LANG_HOOKS_DUP_LANG_SPECIFIC_DECL c_dup_lang_specific_decl
......
...@@ -234,9 +234,6 @@ c_objc_common_init (filename) ...@@ -234,9 +234,6 @@ c_objc_common_init (filename)
if (filename == NULL) if (filename == NULL)
return NULL; return NULL;
save_lang_status = &push_c_function_context;
restore_lang_status = &pop_c_function_context;
mark_lang_status = &mark_c_function_context;
lang_expand_decl_stmt = c_expand_decl_stmt; lang_expand_decl_stmt = c_expand_decl_stmt;
/* These were not defined in the Objective-C front end, but I'm /* These were not defined in the Objective-C front end, but I'm
......
...@@ -206,9 +206,9 @@ extern tree lookup_name PARAMS ((tree)); ...@@ -206,9 +206,9 @@ extern tree lookup_name PARAMS ((tree));
extern tree lookup_name_current_level PARAMS ((tree)); extern tree lookup_name_current_level PARAMS ((tree));
extern void parmlist_tags_warning PARAMS ((void)); extern void parmlist_tags_warning PARAMS ((void));
extern void pending_xref_error PARAMS ((void)); extern void pending_xref_error PARAMS ((void));
extern void mark_c_function_context PARAMS ((struct function *)); extern void c_mark_function_context PARAMS ((struct function *));
extern void push_c_function_context PARAMS ((struct function *)); extern void c_push_function_context PARAMS ((struct function *));
extern void pop_c_function_context PARAMS ((struct function *)); extern void c_pop_function_context PARAMS ((struct function *));
extern void pop_label_level PARAMS ((void)); extern void pop_label_level PARAMS ((void));
extern void push_label_level PARAMS ((void)); extern void push_label_level PARAMS ((void));
extern void push_parm_decl PARAMS ((tree)); extern void push_parm_decl PARAMS ((tree));
......
2002-04-20 Neil Booth <neil@daikokuya.demon.co.uk>
* cp-lang.c (LANG_HOOKS_FUNCTION_INIT,
LANG_HOOKS_FUNCTION_FREE, LANG_HOOKS_FUNCTION_MARK): Redefine.
* cp-tree.h (cxx_push_function_context, cxx_pop_function_context,
cxx_mark_function_context): New.
* decl.c (push_cp_function_context, pop_cp_function_context,
mark_cp_function_context): Rename for consistency.
(cxx_init_decl_processing): Don't set old hooks.
2002-04-19 Neil Booth <neil@daikokuya.demon.co.uk> 2002-04-19 Neil Booth <neil@daikokuya.demon.co.uk>
* call.c (convert_type_from_ellipsis): Rename, update. * call.c (convert_type_from_ellipsis): Rename, update.
......
...@@ -93,6 +93,13 @@ static bool cxx_warn_unused_global_decl PARAMS ((tree)); ...@@ -93,6 +93,13 @@ static bool cxx_warn_unused_global_decl PARAMS ((tree));
#undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL #undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL
#define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL cxx_warn_unused_global_decl #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL cxx_warn_unused_global_decl
#undef LANG_HOOKS_FUNCTION_INIT
#define LANG_HOOKS_FUNCTION_INIT cxx_push_function_context
#undef LANG_HOOKS_FUNCTION_FREE
#define LANG_HOOKS_FUNCTION_FREE cxx_pop_function_context
#undef LANG_HOOKS_FUNCTION_MARK
#define LANG_HOOKS_FUNCTION_MARK cxx_mark_function_context
#undef LANG_HOOKS_TREE_INLINING_WALK_SUBTREES #undef LANG_HOOKS_TREE_INLINING_WALK_SUBTREES
#define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES \ #define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES \
cp_walk_subtrees cp_walk_subtrees
......
...@@ -3658,6 +3658,9 @@ extern void cxx_init_decl_processing PARAMS ((void)); ...@@ -3658,6 +3658,9 @@ extern void cxx_init_decl_processing PARAMS ((void));
extern void cxx_mark_tree PARAMS ((tree)); extern void cxx_mark_tree PARAMS ((tree));
extern void cxx_insert_default_attributes PARAMS ((tree)); extern void cxx_insert_default_attributes PARAMS ((tree));
extern bool cxx_mark_addressable PARAMS ((tree)); extern bool cxx_mark_addressable PARAMS ((tree));
extern void cxx_push_function_context PARAMS ((struct function *));
extern void cxx_pop_function_context PARAMS ((struct function *));
extern void cxx_mark_function_context PARAMS ((struct function *));
extern int toplevel_bindings_p PARAMS ((void)); extern int toplevel_bindings_p PARAMS ((void));
extern int namespace_bindings_p PARAMS ((void)); extern int namespace_bindings_p PARAMS ((void));
extern void keep_next_level PARAMS ((int)); extern void keep_next_level PARAMS ((int));
......
...@@ -128,11 +128,8 @@ static void layout_var_decl PARAMS ((tree)); ...@@ -128,11 +128,8 @@ static void layout_var_decl PARAMS ((tree));
static void maybe_commonize_var PARAMS ((tree)); static void maybe_commonize_var PARAMS ((tree));
static tree check_initializer PARAMS ((tree, tree)); static tree check_initializer PARAMS ((tree, tree));
static void make_rtl_for_nonlocal_decl PARAMS ((tree, tree, const char *)); static void make_rtl_for_nonlocal_decl PARAMS ((tree, tree, const char *));
static void push_cp_function_context PARAMS ((struct function *));
static void pop_cp_function_context PARAMS ((struct function *));
static void mark_binding_level PARAMS ((void *)); static void mark_binding_level PARAMS ((void *));
static void mark_named_label_lists PARAMS ((void *, void *)); static void mark_named_label_lists PARAMS ((void *, void *));
static void mark_cp_function_context PARAMS ((struct function *));
static void mark_saved_scope PARAMS ((void *)); static void mark_saved_scope PARAMS ((void *));
static void mark_lang_function PARAMS ((struct cp_language_function *)); static void mark_lang_function PARAMS ((struct cp_language_function *));
static void save_function_data PARAMS ((tree)); static void save_function_data PARAMS ((tree));
...@@ -6481,9 +6478,6 @@ cxx_init_decl_processing () ...@@ -6481,9 +6478,6 @@ cxx_init_decl_processing ()
initialize_predefined_identifiers (); initialize_predefined_identifiers ();
/* Fill in back-end hooks. */ /* Fill in back-end hooks. */
init_lang_status = &push_cp_function_context;
free_lang_status = &pop_cp_function_context;
mark_lang_status = &mark_cp_function_context;
lang_missing_noreturn_ok_p = &cp_missing_noreturn_ok_p; lang_missing_noreturn_ok_p = &cp_missing_noreturn_ok_p;
cp_parse_init (); cp_parse_init ();
...@@ -14340,7 +14334,7 @@ finish_function (flags) ...@@ -14340,7 +14334,7 @@ finish_function (flags)
if (! nested) if (! nested)
/* Let the error reporting routines know that we're outside a /* Let the error reporting routines know that we're outside a
function. For a nested function, this value is used in function. For a nested function, this value is used in
pop_cp_function_context and then reset via pop_function_context. */ cxx_pop_function_context and then reset via pop_function_context. */
current_function_decl = NULL_TREE; current_function_decl = NULL_TREE;
return fndecl; return fndecl;
...@@ -14629,8 +14623,8 @@ revert_static_member_fn (decl) ...@@ -14629,8 +14623,8 @@ revert_static_member_fn (decl)
/* Initialize the variables used during compilation of a C++ /* Initialize the variables used during compilation of a C++
function. */ function. */
static void void
push_cp_function_context (f) cxx_push_function_context (f)
struct function *f; struct function *f;
{ {
struct cp_language_function *p struct cp_language_function *p
...@@ -14650,8 +14644,8 @@ push_cp_function_context (f) ...@@ -14650,8 +14644,8 @@ push_cp_function_context (f)
/* Free the language-specific parts of F, now that we've finished /* Free the language-specific parts of F, now that we've finished
compiling the function. */ compiling the function. */
static void void
pop_cp_function_context (f) cxx_pop_function_context (f)
struct function *f; struct function *f;
{ {
if (f->language) if (f->language)
...@@ -14689,8 +14683,8 @@ mark_lang_function (p) ...@@ -14689,8 +14683,8 @@ mark_lang_function (p)
/* Mark the language-specific data in F for GC. */ /* Mark the language-specific data in F for GC. */
static void void
mark_cp_function_context (f) cxx_mark_function_context (f)
struct function *f; struct function *f;
{ {
mark_lang_function ((struct cp_language_function *) f->language); mark_lang_function ((struct cp_language_function *) f->language);
......
...@@ -133,13 +133,6 @@ void (*free_machine_status) PARAMS ((struct function *)); ...@@ -133,13 +133,6 @@ void (*free_machine_status) PARAMS ((struct function *));
that will need garbage collection. */ that will need garbage collection. */
void (*mark_machine_status) PARAMS ((struct function *)); void (*mark_machine_status) PARAMS ((struct function *));
/* Likewise, but for language-specific data. */
void (*init_lang_status) PARAMS ((struct function *));
void (*save_lang_status) PARAMS ((struct function *));
void (*restore_lang_status) PARAMS ((struct function *));
void (*mark_lang_status) PARAMS ((struct function *));
void (*free_lang_status) PARAMS ((struct function *));
/* The FUNCTION_DECL for an inline function currently being expanded. */ /* The FUNCTION_DECL for an inline function currently being expanded. */
tree inline_function_decl; tree inline_function_decl;
...@@ -328,7 +321,7 @@ find_function_data (decl) ...@@ -328,7 +321,7 @@ find_function_data (decl)
/* Save the current context for compilation of a nested function. /* Save the current context for compilation of a nested function.
This is called from language-specific code. The caller should use This is called from language-specific code. The caller should use
the save_lang_status callback to save any language-specific state, the enter_nested langhook to save any language-specific state,
since this function knows only about language-independent since this function knows only about language-independent
variables. */ variables. */
...@@ -357,8 +350,7 @@ push_function_context_to (context) ...@@ -357,8 +350,7 @@ push_function_context_to (context)
outer_function_chain = p; outer_function_chain = p;
p->fixup_var_refs_queue = 0; p->fixup_var_refs_queue = 0;
if (save_lang_status) (*lang_hooks.function.enter_nested) (p);
(*save_lang_status) (p);
cfun = 0; cfun = 0;
} }
...@@ -387,8 +379,7 @@ pop_function_context_from (context) ...@@ -387,8 +379,7 @@ pop_function_context_from (context)
restore_emit_status (p); restore_emit_status (p);
if (restore_lang_status) (*lang_hooks.function.leave_nested) (p);
(*restore_lang_status) (p);
/* Finish doing put_var_into_stack for any of our variables which became /* Finish doing put_var_into_stack for any of our variables which became
addressable during the nested function. If only one entry has to be addressable during the nested function. If only one entry has to be
...@@ -441,8 +432,7 @@ free_after_parsing (f) ...@@ -441,8 +432,7 @@ free_after_parsing (f)
/* f->varasm is used by code generation. */ /* f->varasm is used by code generation. */
/* f->eh->eh_return_stub_label is used by code generation. */ /* f->eh->eh_return_stub_label is used by code generation. */
if (free_lang_status) (*lang_hooks.function.free) (f);
(*free_lang_status) (f);
free_stmt_status (f); free_stmt_status (f);
} }
...@@ -6301,8 +6291,7 @@ prepare_function_start () ...@@ -6301,8 +6291,7 @@ prepare_function_start ()
current_function_outgoing_args_size = 0; current_function_outgoing_args_size = 0;
if (init_lang_status) (*lang_hooks.function.init) (cfun);
(*init_lang_status) (cfun);
if (init_machine_status) if (init_machine_status)
(*init_machine_status) (cfun); (*init_machine_status) (cfun);
} }
...@@ -8025,8 +8014,7 @@ ggc_mark_struct_function (f) ...@@ -8025,8 +8014,7 @@ ggc_mark_struct_function (f)
if (mark_machine_status) if (mark_machine_status)
(*mark_machine_status) (f); (*mark_machine_status) (f);
if (mark_lang_status) (*lang_hooks.function.mark) (f);
(*mark_lang_status) (f);
if (f->original_arg_vector) if (f->original_arg_vector)
ggc_mark_rtvec ((rtvec) f->original_arg_vector); ggc_mark_rtvec ((rtvec) f->original_arg_vector);
......
...@@ -574,13 +574,6 @@ extern void (*free_machine_status) PARAMS ((struct function *)); ...@@ -574,13 +574,6 @@ extern void (*free_machine_status) PARAMS ((struct function *));
that will need garbage collection. */ that will need garbage collection. */
extern void (*mark_machine_status) PARAMS ((struct function *)); extern void (*mark_machine_status) PARAMS ((struct function *));
/* Likewise, but for language-specific data. */
extern void (*init_lang_status) PARAMS ((struct function *));
extern void (*mark_lang_status) PARAMS ((struct function *));
extern void (*save_lang_status) PARAMS ((struct function *));
extern void (*restore_lang_status) PARAMS ((struct function *));
extern void (*free_lang_status) PARAMS ((struct function *));
/* Save and restore status information for a nested function. */ /* Save and restore status information for a nested function. */
extern void restore_emit_status PARAMS ((struct function *)); extern void restore_emit_status PARAMS ((struct function *));
extern void free_after_parsing PARAMS ((struct function *)); extern void free_after_parsing PARAMS ((struct function *));
......
...@@ -41,6 +41,7 @@ extern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree)); ...@@ -41,6 +41,7 @@ extern HOST_WIDE_INT hook_get_alias_set_0 PARAMS ((tree));
extern void lhd_do_nothing PARAMS ((void)); extern void lhd_do_nothing PARAMS ((void));
extern void lhd_do_nothing_t PARAMS ((tree)); extern void lhd_do_nothing_t PARAMS ((tree));
extern void lhd_do_nothing_f PARAMS ((struct function *));
extern int lhd_decode_option PARAMS ((int, char **)); extern int lhd_decode_option PARAMS ((int, char **));
extern HOST_WIDE_INT lhd_get_alias_set PARAMS ((tree)); extern HOST_WIDE_INT lhd_get_alias_set PARAMS ((tree));
extern tree lhd_return_tree PARAMS ((tree)); extern tree lhd_return_tree PARAMS ((tree));
...@@ -109,6 +110,12 @@ tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree)); ...@@ -109,6 +110,12 @@ tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree));
#define LANG_HOOKS_DECL_PRINTABLE_NAME lhd_decl_printable_name #define LANG_HOOKS_DECL_PRINTABLE_NAME lhd_decl_printable_name
#define LANG_HOOKS_SET_YYDEBUG lhd_set_yydebug #define LANG_HOOKS_SET_YYDEBUG lhd_set_yydebug
#define LANG_HOOKS_FUNCTION_INIT lhd_do_nothing_f
#define LANG_HOOKS_FUNCTION_FREE lhd_do_nothing_f
#define LANG_HOOKS_FUNCTION_ENTER_NESTED lhd_do_nothing_f
#define LANG_HOOKS_FUNCTION_LEAVE_NESTED lhd_do_nothing_f
#define LANG_HOOKS_FUNCTION_MARK lhd_do_nothing_f
/* Tree inlining hooks. */ /* Tree inlining hooks. */
#define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES lhd_tree_inlining_walk_subtrees #define LANG_HOOKS_TREE_INLINING_WALK_SUBTREES lhd_tree_inlining_walk_subtrees
#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \ #define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
...@@ -146,6 +153,14 @@ tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree)); ...@@ -146,6 +153,14 @@ tree lhd_tree_inlining_convert_parm_for_inlining PARAMS ((tree, tree, tree));
LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \ LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING \
} \ } \
#define LANG_HOOKS_FUNCTION_INITIALIZER { \
LANG_HOOKS_FUNCTION_INIT, \
LANG_HOOKS_FUNCTION_FREE, \
LANG_HOOKS_FUNCTION_ENTER_NESTED, \
LANG_HOOKS_FUNCTION_LEAVE_NESTED, \
LANG_HOOKS_FUNCTION_MARK \
}
/* Tree dump hooks. */ /* Tree dump hooks. */
int lhd_tree_dump_dump_tree PARAMS ((void *, tree)); int lhd_tree_dump_dump_tree PARAMS ((void *, tree));
int lhd_tree_dump_type_quals PARAMS ((tree)); int lhd_tree_dump_type_quals PARAMS ((tree));
...@@ -231,6 +246,7 @@ int lhd_tree_dump_type_quals PARAMS ((tree)); ...@@ -231,6 +246,7 @@ int lhd_tree_dump_type_quals PARAMS ((tree));
LANG_HOOKS_DECL_PRINTABLE_NAME, \ LANG_HOOKS_DECL_PRINTABLE_NAME, \
LANG_HOOKS_PRINT_ERROR_FUNCTION, \ LANG_HOOKS_PRINT_ERROR_FUNCTION, \
LANG_HOOKS_SET_YYDEBUG, \ LANG_HOOKS_SET_YYDEBUG, \
LANG_HOOKS_FUNCTION_INITIALIZER, \
LANG_HOOKS_TREE_INLINING_INITIALIZER, \ LANG_HOOKS_TREE_INLINING_INITIALIZER, \
LANG_HOOKS_TREE_DUMP_INITIALIZER, \ LANG_HOOKS_TREE_DUMP_INITIALIZER, \
LANG_HOOKS_DECLS, \ LANG_HOOKS_DECLS, \
......
...@@ -39,7 +39,7 @@ lhd_do_nothing () ...@@ -39,7 +39,7 @@ lhd_do_nothing ()
{ {
} }
/* Do nothing. */ /* Do nothing (tree). */
void void
lhd_do_nothing_t (t) lhd_do_nothing_t (t)
...@@ -47,6 +47,14 @@ lhd_do_nothing_t (t) ...@@ -47,6 +47,14 @@ lhd_do_nothing_t (t)
{ {
} }
/* Do nothing (function). */
void
lhd_do_nothing_f (f)
struct function *f ATTRIBUTE_UNUSED;
{
}
/* Do nothing (return the tree node passed). */ /* Do nothing (return the tree node passed). */
tree tree
......
...@@ -57,6 +57,26 @@ struct lang_hooks_for_tree_inlining ...@@ -57,6 +57,26 @@ struct lang_hooks_for_tree_inlining
union tree_node *)); union tree_node *));
}; };
/* Lang hooks for management of language-specific data or status
when entering / leaving functions etc. */
struct lang_hooks_for_functions
{
/* Called when entering a function. */
void (*init) PARAMS ((struct function *));
/* Called when leaving a function. */
void (*free) PARAMS ((struct function *));
/* Called when entering a nested function. */
void (*enter_nested) PARAMS ((struct function *));
/* Called when leaving a nested function. */
void (*leave_nested) PARAMS ((struct function *));
/* Lang-specific function data marking for GC. */
void (*mark) PARAMS ((struct function *));
};
/* The following hooks are used by tree-dump.c. */ /* The following hooks are used by tree-dump.c. */
struct lang_hooks_for_tree_dump struct lang_hooks_for_tree_dump
...@@ -312,6 +332,9 @@ struct lang_hooks ...@@ -312,6 +332,9 @@ struct lang_hooks
warning that the front end does not use such a parser. */ warning that the front end does not use such a parser. */
void (*set_yydebug) PARAMS ((int)); void (*set_yydebug) PARAMS ((int));
/* Function-related language hooks. */
struct lang_hooks_for_functions function;
struct lang_hooks_for_tree_inlining tree_inlining; struct lang_hooks_for_tree_inlining tree_inlining;
struct lang_hooks_for_tree_dump tree_dump; struct lang_hooks_for_tree_dump tree_dump;
......
...@@ -73,6 +73,13 @@ static void objc_post_options PARAMS ((void)); ...@@ -73,6 +73,13 @@ static void objc_post_options PARAMS ((void));
#undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL #undef LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL
#define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl #define LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL c_warn_unused_global_decl
#undef LANG_HOOKS_FUNCTION_ENTER_NESTED
#define LANG_HOOKS_FUNCTION_ENTER_NESTED c_push_function_context
#undef LANG_HOOKS_FUNCTION_LEAVE_NESTED
#define LANG_HOOKS_FUNCTION_LEAVE_NESTED c_pop_function_context
#undef LANG_HOOKS_FUNCTION_MARK
#define LANG_HOOKS_FUNCTION_MARK c_mark_function_context
/* Inlining hooks same as the C front end. */ /* Inlining hooks same as the C front end. */
#undef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN #undef LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN
#define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \ #define LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment