summaryrefslogtreecommitdiff
path: root/gcc/function.h
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>1999-09-05 01:06:48 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>1999-09-05 01:06:48 +0000
commit26df1c5eadc76e61201fc84dd1a2ab29c03bcdc1 (patch)
tree18e6552fb690c4b3e5efbd8f45b8ffa8e5ea1546 /gcc/function.h
parentb417f8b6a317eba7ede8301d6d175d7365de170b (diff)
downloadgcc-26df1c5eadc76e61201fc84dd1a2ab29c03bcdc1.tar.gz
* c-decl.c (struct language_function): Renamed from struct c_function.
Delete elt NEXT. (c_function_chain): Delete. (push_c_function_context): New arg F. Don't warn about nested functions here. Fill LANGUAGE elt of F. Delete code to update c_function_chain. Don't call push_function_context. (pop_c_function_context): New arg F. Restore from there instead of from c_function_chain. Don't call pop_function_context. Clear out LANGUAGE field of F when done. * c-lang.c: Include "function.h" (lang_init): Initialize save_lang_status and restore_lang_status. * c-parse.in (nested_function, nested_function_notype): Warn about nested functions. Call push_function_context/pop_function_context instead of the _c_ variants. * c-tree.h (push_c_function_context, pop_c_function_context): Update prototype. * Makefile.in (c-lang.o): Update dependencies. * emit-rtl.c (init_emit): Use xmalloc to allocate regno_reg_rtx, regno_pointer_flag, regno_pointer_align. (gen_reg_rtx): Use xrealloc to enlarge them. (free_emit_status): New function. * function.c (mark_machine_status, mark_lang_status): New variables. (assign_stack_local_1): Renamed from assign_outer_stack_local. Merge in some bits from assign_stack_local. All callers changed to use new name. (assign_stack_local): Just call assign_stack_local_1. (free_after_compilation): New function. (put_reg_into_stack): Simplify to always call assign_stack_local_1. (trampoline_address): Likewise. (assign_parms): Use xcalloc/xrealloc to allocate parm_reg_stack_loc. (prepare_function_start): Explicitly clear some more variables. * function.h (struct function): New elt can_garbage_collect. (mark_machine_status, mark_lang_status): Declare variables. (free_after_compilation, free_emit_status, free_varasm_status, init_varasm_status): Declare functions. * toplev.c (rest_of_compilation): Call free_after_compilation when done with the current function. * varasm.c (free_varasm_status): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29117 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/function.h')
-rw-r--r--gcc/function.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/function.h b/gcc/function.h
index d34da4010a0..0b6eb66b68d 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -184,6 +184,9 @@ struct function
struct emit_status *emit;
struct varasm_status *varasm;
+ /* Nonzero if we are done compiling this function. */
+ int can_garbage_collect;
+
/* For function.c. */
/* Name of this function. */
@@ -533,10 +536,12 @@ extern HOST_WIDE_INT get_func_frame_size PROTO((struct function *));
save and restore machine-specific data,
in push_function_context and pop_function_context. */
extern void (*init_machine_status) PROTO((struct function *));
+extern void (*mark_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 (*mark_lang_status) PROTO((struct function *));
extern void (*save_lang_status) PROTO((struct function *));
extern void (*restore_lang_status) PROTO((struct function *));
@@ -544,7 +549,11 @@ extern void (*restore_lang_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 void free_after_compilation PROTO((struct function *));
+extern void init_varasm_status PROTO((struct function *));
+extern void free_varasm_status PROTO((struct function *));
+extern void free_emit_status PROTO((struct function *));
extern rtx get_first_block_beg PROTO((void));
extern void init_virtual_regs PROTO((struct emit_status *));