diff options
author | Bernd Schmidt <crux@pool.informatik.rwth-aachen.de> | 1999-09-04 02:16:58 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1999-09-04 02:16:58 +0000 |
commit | 8c5666b4c171c4f9989f1974272c1e393423d2f6 (patch) | |
tree | 783bd7815837b76ff7e04a13fc3b23ec80d17008 /gcc/function.c | |
parent | 0c174a684cad337fd76cbb177b852983d247a5bd (diff) | |
download | gcc-8c5666b4c171c4f9989f1974272c1e393423d2f6.zip gcc-8c5666b4c171c4f9989f1974272c1e393423d2f6.tar.gz gcc-8c5666b4c171c4f9989f1974272c1e393423d2f6.tar.bz2 |
function.h (struct function): Add new element LANGUAGE.
* function.h (struct function): Add new element LANGUAGE.
(save_lang_status): Declare new variable.
(restore_lang_status): Likewise.
* function.c (save_lang_status): Define.
(restore_lang_status): Likewise.
(push_function_context_to): Call language-specific save function.
(pop_function_context_from): Call language-specific restore function.
From-SVN: r29095
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/function.c b/gcc/function.c index 6fb5368..c867921 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -120,6 +120,10 @@ static int virtuals_instantiated; void (*save_machine_status) PROTO((struct function *)); void (*restore_machine_status) PROTO((struct function *)); +/* Likewise, but for language-specific data. */ +void (*save_lang_status) PROTO((struct function *)); +void (*restore_lang_status) PROTO((struct function *)); + /* The FUNCTION_DECL for an inline function currently being expanded. */ tree inline_function_decl; @@ -287,9 +291,10 @@ find_function_data (decl) } /* Save the current context for compilation of a nested function. - This is called from language-specific code. - The caller is responsible for saving any language-specific status, - since this function knows only about language-independent variables. */ + This is called from language-specific code. The caller should use + the save_lang_status callback to save any language-specific state, + since this function knows only about language-independent + variables. */ void push_function_context_to (context) @@ -308,6 +313,8 @@ push_function_context_to (context) save_tree_status (p, context); save_varasm_status (p, context); + if (save_lang_status) + (*save_lang_status) (p); if (save_machine_status) (*save_machine_status) (p); @@ -344,6 +351,8 @@ pop_function_context_from (context) if (restore_machine_status) (*restore_machine_status) (p); + if (restore_lang_status) + (*restore_lang_status) (p); /* Finish doing put_var_into_stack for any of our variables which became addressable during the nested function. */ |