aboutsummaryrefslogtreecommitdiff
path: root/gcc/varasm.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-09-15 18:12:25 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-09-15 18:12:25 -0700
commitfa51b01b556abeccf484335aad120f6dc9e68861 (patch)
tree0b720d86986661e0024880e115976d9fa928b8f1 /gcc/varasm.c
parent637194e69a20cab4a299af8c9706e67a6724f215 (diff)
downloadgcc-fa51b01b556abeccf484335aad120f6dc9e68861.zip
gcc-fa51b01b556abeccf484335aad120f6dc9e68861.tar.gz
gcc-fa51b01b556abeccf484335aad120f6dc9e68861.tar.bz2
emit-rtl.c (free_emit_status): Don't check DECL_DEFER_OUTPUT.
* emit-rtl.c (free_emit_status): Don't check DECL_DEFER_OUTPUT. Free the struct. (mark_emit_status): Renamed from mark_emit_state. * except.c (mark_eh_status): Renamed from mark_eh_state. Check not null before marking. (free_eh_status): New. * expr.c (mark_expr_status, free_expr_status): New. * function.c (free_machine_status): New. (free_after_parsing): New. (free_after_compilation): Move bits to free_after_parsing; call free_eh_status, free_expr_status; zero the marked members of the function state. (prepare_function_start): No can_garbage_collect. Call init_eh_for_function. (expand_dummy_function_end): Free up current_function state. (mark_function_status): Renamed from mark_function_state. (mark_function_chain): No can_garbage_collect. Call mark_expr_status. * function.h (struct function): No can_garbage_collect. (free_machine_status, free_after_parsing): Declare. (free_eh_status, free_expr_status): Declare. * ggc.h (mark_expr_status): Declare. * stmt.c (free_stmt_status): Free the struct. (mark_stmt_status): Renamed from mark_stmt_state. (init_stmt): Don't call init_eh. (init_stmt_for_function): Don't call init_eh_for_function. * toplev.c (compile_file): Call init_eh. (rest_of_compilation): Free basic block info before ggc_collect. Call free_after_parsing; conditionally call free_after_compilation. * varasm.c (mark_varasm_status): Renamed from mark_varasm_state. Check not null before marking. From-SVN: r29448
Diffstat (limited to 'gcc/varasm.c')
-rw-r--r--gcc/varasm.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 779aeaa..cf56a09 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -3228,9 +3228,12 @@ mark_pool_sym_hash_table (pps)
/* Mark P for GC. */
void
-mark_varasm_state (p)
- struct varasm_status *p;
+mark_varasm_status (p)
+ struct varasm_status *p;
{
+ if (p == NULL)
+ return;
+
mark_pool_constant (p->x_first_pool);
mark_pool_sym_hash_table (p->x_const_rtx_sym_hash_table);
ggc_mark_rtx (p->x_const_double_chain);
@@ -3246,17 +3249,11 @@ free_varasm_status (f)
{
struct varasm_status *p;
- if (DECL_DEFER_OUTPUT (f->decl))
- return;
-
p = f->varasm;
free (p->x_const_rtx_hash_table);
free (p->x_const_rtx_sym_hash_table);
-
- p->x_first_pool = p->x_last_pool = 0;
- p->x_const_rtx_hash_table = 0;
- p->x_const_rtx_sym_hash_table = 0;
- p->x_const_double_chain = 0;
+ free (p);
+ f->varasm = NULL;
}
enum kind { RTX_DOUBLE, RTX_INT };