for (rt = gt_ggc_deletable_rtab; *rt; rt++)
for (rti = *rt; rti->base != NULL; rti++)
- memset (rti->base, 0, rti->stride);
+ memset (rti->base, 0, rti->stride * rti->nelt);
for (rt = gt_ggc_rtab; *rt; rt++)
ggc_mark_root_tab (*rt);
SIZE_AMOUNT (MALLINFO_FN ().arena));
#endif
}
+
+/* Forcibly clear all GTY roots. */
+
+void
+ggc_common_finalize ()
+{
+ const struct ggc_root_tab *const *rt;
+ const_ggc_root_tab_t rti;
+
+ for (rt = gt_ggc_deletable_rtab; *rt; rt++)
+ for (rti = *rt; rti->base != NULL; rti++)
+ memset (rti->base, 0, rti->stride * rti->nelt);
+
+ for (rt = gt_ggc_rtab; *rt; rt++)
+ for (rti = *rt; rti->base != NULL; rti++)
+ memset (rti->base, 0, rti->stride * rti->nelt);
+
+ for (rt = gt_pch_scalar_rtab; *rt; rt++)
+ for (rti = *rt; rti->base != NULL; rti++)
+ memset (rti->base, 0, rti->stride * rti->nelt);
+}
cgraph_cc_finalize ();
cgraphunit_cc_finalize ();
symtab_thunks_cc_finalize ();
+ dwarf2cfi_cc_finalize ();
dwarf2out_cc_finalize ();
gcse_cc_finalize ();
ipa_cp_cc_finalize ();
save_decoded_options = NULL;
save_decoded_options_count = 0;
+ ggc_common_finalize ();
+
/* Clean up the context (and pass_manager etc). */
delete g;
g = NULL;