aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorBernd Schmidt <crux@pool.informatik.rwth-aachen.de>1999-09-04 02:16:58 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>1999-09-04 02:16:58 +0000
commit8c5666b4c171c4f9989f1974272c1e393423d2f6 (patch)
tree783bd7815837b76ff7e04a13fc3b23ec80d17008 /gcc/function.c
parent0c174a684cad337fd76cbb177b852983d247a5bd (diff)
downloadgcc-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.c15
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. */