diff options
author | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-05 01:06:48 +0000 |
---|---|---|
committer | mmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-09-05 01:06:48 +0000 |
commit | 26df1c5eadc76e61201fc84dd1a2ab29c03bcdc1 (patch) | |
tree | 18e6552fb690c4b3e5efbd8f45b8ffa8e5ea1546 /gcc/function.h | |
parent | b417f8b6a317eba7ede8301d6d175d7365de170b (diff) | |
download | gcc-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.h | 9 |
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 *)); |