diff options
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r-- | gcc/emit-rtl.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 5a4b5f2..9837b68 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -1607,13 +1607,19 @@ restore_emit_status (p) clear_emit_caches (); } -/* Clear out all parts of our state in F that can safely be discarded +/* Clear out all parts of the state in F that can safely be discarded after the function has been compiled, to let garbage collection - reclaim the memory. */ + reclaim the memory. D is the declaration for the function just + compiled. Its output may have been deferred. */ + void -free_emit_status (f) +free_emit_status (f, d) struct function *f; + tree d; { + if (DECL_DEFER_OUTPUT (d)) + return; + free (f->emit->x_regno_reg_rtx); free (f->emit->regno_pointer_flag); free (f->emit->regno_pointer_align); @@ -3693,6 +3699,7 @@ init_emit_once (line_numbers) ggc_add_rtx_root (&const_tiny_rtx[0][0], sizeof(const_tiny_rtx)/sizeof(rtx)); + ggc_add_rtx_root (&const_true_rtx, 1); ggc_add_rtx_root (&pic_offset_table_rtx, 1); ggc_add_rtx_root (&struct_value_rtx, 1); ggc_add_rtx_root (&struct_value_incoming_rtx, 1); |