aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.h
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@cygnus.co.uk>1999-09-04 13:09:56 +0000
committerBernd Schmidt <crux@gcc.gnu.org>1999-09-04 13:09:56 +0000
commit36edd3cc1b6398015a97897f8e3c07896a5921d4 (patch)
tree994384faecb0b7ea09763638c0d3e3b6369993d1 /gcc/function.h
parent1b63ada472f5ebb586c756b0d490eae51abb3bea (diff)
downloadgcc-36edd3cc1b6398015a97897f8e3c07896a5921d4.zip
gcc-36edd3cc1b6398015a97897f8e3c07896a5921d4.tar.gz
gcc-36edd3cc1b6398015a97897f8e3c07896a5921d4.tar.bz2
Change memory mangement and constant pool handling for nested functions to match that of normal functions; add init_machine_status mechanism.
From-SVN: r29101
Diffstat (limited to 'gcc/function.h')
-rw-r--r--gcc/function.h28
1 files changed, 9 insertions, 19 deletions
diff --git a/gcc/function.h b/gcc/function.h
index 9a9156a..d34da40 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -182,6 +182,7 @@ struct function
struct stmt_status *stmt;
struct expr_status *expr;
struct emit_status *emit;
+ struct varasm_status *varasm;
/* For function.c. */
@@ -415,12 +416,9 @@ struct function
struct obstack *expression_obstack;
struct obstack *saveable_obstack;
struct obstack *rtl_obstack;
- struct simple_obstack_stack *inline_obstacks;
- /* For integrate.c. We duplicate some of the fields so that
- save_for_inline_copying can keep two versions. */
+ /* For integrate.c. */
int inlinable;
- struct emit_status *inl_emit;
/* This is in fact an rtvec. */
void *original_arg_vector;
tree original_decl_initial;
@@ -448,13 +446,6 @@ struct function
/* If some insns can be deferred to the delay slots of the epilogue, the
delay list for them is recorded here. */
rtx epilogue_delay_list;
-
- /* For varasm. */
- struct constant_descriptor **const_rtx_hash_table;
- struct pool_sym **const_rtx_sym_hash_table;
- struct pool_constant *first_pool, *last_pool;
- int pool_offset;
- rtx const_double_chain;
};
extern struct function *current_function;
@@ -534,25 +525,24 @@ extern tree *identify_blocks PROTO((tree, rtx));
/* Return size needed for stack frame based on slots so far allocated.
This size counts from zero. It is not rounded to STACK_BOUNDARY;
the caller may have to do that. */
-extern HOST_WIDE_INT get_frame_size PROTO((void));
+extern HOST_WIDE_INT get_frame_size PROTO((void));
/* Likewise, but for a different than the current function. */
-extern HOST_WIDE_INT get_func_frame_size PROTO((struct function *));
+extern HOST_WIDE_INT get_func_frame_size PROTO((struct function *));
/* These variables hold pointers to functions to
save and restore machine-specific data,
in push_function_context and pop_function_context. */
-extern void (*save_machine_status) PROTO((struct function *));
-extern void (*restore_machine_status) PROTO((struct function *));
+extern void (*init_machine_status) PROTO((struct function *));
+extern void (*save_machine_status) PROTO((struct function *));
+extern void (*restore_machine_status) PROTO((struct function *));
/* Likewise, but for language-specific data. */
extern void (*save_lang_status) PROTO((struct function *));
extern void (*restore_lang_status) PROTO((struct function *));
/* Save and restore status information for a nested function. */
-extern void save_tree_status PROTO((struct function *, tree));
-extern void restore_tree_status PROTO((struct function *, tree));
-extern void save_varasm_status PROTO((struct function *, tree));
-extern void restore_varasm_status PROTO((struct function *));
+extern void save_tree_status PROTO((struct function *));
+extern void restore_tree_status PROTO((struct function *));
extern void restore_emit_status PROTO((struct function *));
extern rtx get_first_block_beg PROTO((void));